@pendle/core-v2 0.11.11-testnet → 0.12.1-testnet
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +199 -30
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSCY.sol/Pendle3CrvAndTokenSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSCY.sol/Pendle3CrvAndTokenSCY.json +1030 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLP2PoolSCY.sol/PendleConvexCurveLP2PoolSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLP2PoolSCY.sol/PendleConvexCurveLP2PoolSCY.json +1025 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLPSCY.sol/PendleConvexCurveLPSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLPSCY.sol/PendleConvexCurveLPSCY.json +948 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/Pendle3CrvHelper.sol/Pendle3CrvHelper.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Convex/Pendle3CrvHelper.sol/Pendle3CrvHelper.json +76 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +140 -25
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.json +138 -23
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +138 -23
- package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +310 -0
- package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/{CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.json → CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.json} +18 -85
- package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +336 -0
- package/build/artifacts/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/{CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.json → CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.json} +8 -21
- package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.json +131 -0
- package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +297 -0
- package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +376 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.json +11 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +29 -2
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +40 -86
- package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +228 -40
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.json +232 -12
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +164 -47
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +25 -93
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.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 +222 -9
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +106 -5
- package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
- package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +4 -0
- package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +329 -0
- package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +13 -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 +87 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +80 -16
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +164 -2
- package/build/artifacts/contracts/core/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +172 -4
- package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +109 -2
- package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.json +57 -4
- package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.json +7 -2
- package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.json +199 -4
- package/build/artifacts/contracts/core/actions/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionSwapPTYT.sol/ActionSwapPTYT.json +108 -2
- package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.json +146 -4
- package/build/artifacts/contracts/core/actions/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.json +177 -0
- package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.json +78 -0
- package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.json +24 -0
- package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.json +264 -0
- package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.json +305 -0
- package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBoringOwnableUpgradeable.sol/IBoringOwnableUpgradeable.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IBoringOwnableUpgradeable.sol/IBoringOwnableUpgradeable.json +34 -0
- package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +31 -1
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +30 -0
- package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.json +10 -0
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +30 -0
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +101 -1
- package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.json +112 -0
- package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.json +76 -0
- package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +13 -0
- package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.json +24 -0
- package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.json +63 -0
- package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.json +148 -0
- package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/{IPVotingEscrow.sol/IPVotingEscrow.json → IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.json} +88 -2
- package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.json +4 -28
- package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/Errors.sol/Errors.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/Errors.sol/Errors.json +886 -0
- package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.json +28 -2
- package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
- package/build/artifacts/contracts/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/{solmate/SSTORE2.sol/SSTORE2.json → VeHistoryLib.sol/CheckpointHelper.json} +4 -4
- package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +2 -2
- package/build/artifacts/contracts/libraries/helpers/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/helpers/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.json +45 -0
- package/build/artifacts/contracts/libraries/helpers/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/helpers/{SSTORE2Deployer.sol/SSTORE2Deployer.json → BaseSplitCodeFactory.sol/CodeDeployer.json} +4 -4
- package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.json +2 -2
- package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +2 -2
- package/build/artifacts/contracts/libraries/kyberswap/IMultihopRouter.sol/IMultihopRouter.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
- package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
- package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +2 -2
- package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.json +167 -0
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +182 -4
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +142 -66
- package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
- package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +3 -1
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +19 -16
- package/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSCY.sol +135 -0
- package/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLP2PoolSCY.sol +96 -0
- package/contracts/SuperComposableYield/SCY-implementations/Convex/ConvexCurveLP/PendleConvexCurveLPSCY.sol +215 -0
- package/contracts/SuperComposableYield/SCY-implementations/Convex/Pendle3CrvHelper.sol +83 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +10 -15
- package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +30 -43
- package/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol +74 -0
- package/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol +38 -0
- package/contracts/core/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol +83 -0
- package/contracts/core/LiquidityMining/{CelerAbstracts/CelerSenderUpg.sol → CrossChainMsg/PendleMsgSenderAppUpg.sol} +12 -13
- package/contracts/core/LiquidityMining/FeeDistributor/EpochResultManager.sol +159 -0
- package/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol +96 -0
- package/contracts/core/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol +68 -0
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +4 -3
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol +6 -2
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol +12 -4
- package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +29 -19
- package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +27 -19
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +63 -27
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +6 -5
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +2 -2
- package/contracts/core/Market/PendleMarket.sol +26 -24
- package/contracts/core/Market/PendleMarketFactory.sol +41 -20
- package/contracts/core/PendleERC20Permit.sol +84 -0
- package/contracts/core/PendleRouter.sol +2 -1
- package/contracts/core/YieldContracts/PendlePrincipalToken.sol +8 -7
- package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +37 -22
- package/contracts/core/YieldContracts/PendleYieldToken.sol +106 -35
- package/contracts/core/actions/ActionAddRemoveLiq.sol +58 -41
- package/contracts/core/actions/ActionCallback.sol +24 -14
- package/contracts/core/actions/ActionMintRedeem.sol +11 -5
- package/contracts/core/actions/ActionMisc.sol +2 -1
- package/contracts/core/actions/ActionSwapPT.sol +38 -19
- package/contracts/core/actions/ActionSwapPTYT.sol +7 -6
- package/contracts/core/actions/ActionSwapYT.sol +36 -19
- package/contracts/core/actions/base/ActionBaseMintRedeem.sol +15 -8
- package/contracts/interfaces/ConvexCurve/IBooster.sol +32 -0
- package/contracts/interfaces/ConvexCurve/ICrvDepositor.sol +20 -0
- package/contracts/interfaces/ConvexCurve/ICvxCrv.sol +6 -0
- package/contracts/interfaces/ConvexCurve/IRewards.sol +38 -0
- package/contracts/interfaces/Curve/ICrvPool.sol +69 -0
- package/contracts/interfaces/IBoringOwnableUpgradeable.sol +10 -0
- package/contracts/interfaces/IPActionAddRemoveLiq.sol +7 -7
- package/contracts/interfaces/IPActionSwapPT.sol +6 -6
- package/contracts/interfaces/IPActionSwapPTYT.sol +2 -2
- package/contracts/interfaces/IPActionSwapYT.sol +13 -13
- package/contracts/interfaces/IPFeeDistributor.sol +19 -0
- package/contracts/interfaces/IPFeeDistributorFactory.sol +14 -0
- package/contracts/interfaces/IPMarket.sol +2 -0
- package/contracts/interfaces/IPMsgReceiverApp.sol +7 -0
- package/contracts/interfaces/IPMsgSendEndpoint.sol +17 -0
- package/contracts/interfaces/IPVotingController.sol +22 -0
- package/contracts/interfaces/{IPVotingEscrow.sol → IPVotingEscrowMainchain.sol} +11 -1
- package/contracts/interfaces/ISuperComposableYield.sol +2 -7
- package/contracts/libraries/Errors.sol +121 -0
- package/contracts/libraries/OracleLib.sol +6 -3
- package/contracts/libraries/VeBalanceLib.sol +5 -1
- package/contracts/libraries/VeHistoryLib.sol +20 -31
- package/contracts/libraries/helpers/ArrayLib.sol +0 -17
- package/contracts/libraries/helpers/BaseSplitCodeFactory.sol +288 -0
- package/contracts/libraries/helpers/TokenHelper.sol +4 -0
- package/contracts/libraries/kyberswap/AggregationRouterHelper.sol +0 -7
- package/contracts/libraries/math/MarketMathCore.sol +29 -25
- package/contracts/libraries/math/Math.sol +6 -2
- package/contracts/libraries/math/WeekMath.sol +2 -2
- package/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol +43 -0
- package/contracts/offchain-helpers/MarketMathStatic.sol +36 -36
- package/contracts/offchain-helpers/RouterStatic.sol +53 -37
- package/deployments/43113-core.json +11 -10
- package/deployments/43113-markets/benqi-market-QI-USDC-FEB-2ND.json +8 -0
- package/deployments/43113-markets/benqi-market-QI-WETH-DEC-1ST.json +8 -0
- package/deployments/43113-testenv.json +9 -9
- package/deployments/80001-core.json +10 -9
- package/deployments/80001-markets/benqi-market-QI-USDC-FEB-2ND.json +8 -0
- package/deployments/80001-markets/benqi-market-QI-WETH-DEC-1ST.json +8 -0
- package/deployments/80001-testenv.json +16 -16
- package/package.json +1 -1
- package/typechain-types/ActionAddRemoveLiq.ts +18 -6
- package/typechain-types/ActionSwapPT.ts +18 -6
- package/typechain-types/ActionSwapPTYT.ts +6 -2
- package/typechain-types/ActionSwapYT.ts +18 -6
- package/typechain-types/IPActionAddRemoveLiq.ts +19 -7
- package/typechain-types/IPActionSwapPT.ts +18 -6
- package/typechain-types/IPActionSwapPTYT.ts +6 -2
- package/typechain-types/IPActionSwapYT.ts +18 -6
- package/typechain-types/IPAllAction.ts +61 -21
- package/typechain-types/IPBatchSeller.ts +19 -37
- package/typechain-types/IPMarket.ts +13 -0
- package/typechain-types/IPVotingController.ts +244 -7
- package/typechain-types/ISuperComposableYield.ts +7 -46
- package/typechain-types/MarketMathStatic.ts +139 -10
- package/typechain-types/PendleBatchSeller.ts +72 -50
- package/typechain-types/PendleGaugeControllerSidechainUpg.ts +28 -149
- package/typechain-types/PendleMarket.ts +104 -0
- package/typechain-types/PendleMarketFactory.ts +76 -13
- package/typechain-types/PendlePrincipalToken.ts +104 -0
- package/typechain-types/PendleQiTokenSCY.ts +111 -46
- package/typechain-types/PendleVotingControllerUpg.ts +133 -77
- package/typechain-types/PendleWstEthSCY.ts +111 -46
- package/typechain-types/PendleYieldContractFactory.ts +84 -21
- package/typechain-types/PendleYieldToken.ts +175 -0
- package/typechain-types/RouterStatic.ts +136 -67
- package/typechain-types/SCYBase.ts +111 -46
- package/typechain-types/SCYBaseWithRewards.ts +111 -46
- package/typechain-types/VotingControllerStorageUpg.ts +246 -27
- package/typechain-types/VotingEscrowPendleMainchain.ts +81 -93
- package/typechain-types/VotingEscrowPendleSidechain.ts +26 -171
- package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +169 -1
- package/typechain-types/factories/ActionCallback__factory.ts +108 -1
- package/typechain-types/factories/ActionMintRedeem__factory.ts +54 -1
- package/typechain-types/factories/ActionMisc__factory.ts +6 -1
- package/typechain-types/factories/ActionSwapPTYT__factory.ts +107 -1
- package/typechain-types/factories/ActionSwapPT__factory.ts +196 -1
- package/typechain-types/factories/ActionSwapYT__factory.ts +143 -1
- package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
- package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +31 -1
- package/typechain-types/factories/IPActionSwapPTYT__factory.ts +10 -0
- package/typechain-types/factories/IPActionSwapPT__factory.ts +30 -0
- package/typechain-types/factories/IPActionSwapYT__factory.ts +30 -0
- package/typechain-types/factories/IPAllAction__factory.ts +101 -1
- package/typechain-types/factories/IPBatchSeller__factory.ts +4 -10
- package/typechain-types/factories/IPMarket__factory.ts +13 -0
- package/typechain-types/factories/IPVotingController__factory.ts +148 -0
- package/typechain-types/factories/ISuperComposableYield__factory.ts +4 -28
- package/typechain-types/factories/MarketMathStatic__factory.ts +181 -3
- package/typechain-types/factories/OracleLib__factory.ts +27 -1
- package/typechain-types/factories/Pendle3CrvAndTokenSCY__factory.ts +1 -1
- package/typechain-types/factories/Pendle3CrvHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleBatchSeller__factory.ts +40 -118
- package/typechain-types/factories/PendleConvexCurveLP2PoolSCY__factory.ts +1 -1
- package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerBaseUpg__factory.ts +11 -0
- package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +28 -1
- package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +48 -86
- package/typechain-types/factories/PendleMarketFactory__factory.ts +129 -9
- package/typechain-types/factories/PendleMarket__factory.ts +214 -1
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +86 -1
- package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenSCY__factory.ts +198 -29
- package/typechain-types/factories/PendleRouter__factory.ts +12 -1
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +235 -40
- package/typechain-types/factories/PendleWstEthSCY__factory.ts +137 -22
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +103 -20
- package/typechain-types/factories/PendleYieldToken__factory.ts +163 -1
- package/typechain-types/factories/PtAMMArb__factory.ts +1 -1
- package/typechain-types/factories/RouterStatic__factory.ts +95 -19
- package/typechain-types/factories/SCYBaseWithRewards__factory.ts +136 -21
- package/typechain-types/factories/SCYBase__factory.ts +136 -21
- package/typechain-types/factories/VotingControllerStorageUpg__factory.ts +232 -12
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +171 -47
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +31 -93
- package/typechain-types/hardhat.d.ts +393 -114
- package/typechain-types/index.ts +36 -66
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +0 -810
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.json +0 -10
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.json +0 -833
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.json +0 -723
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.json +0 -728
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +0 -705
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.json +0 -864
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultSCY.sol/PendleYearnVaultSCY.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultSCY.sol/PendleYearnVaultSCY.json +0 -718
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.json +0 -784
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +0 -4
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +0 -4
- package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +0 -4
- package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +0 -4
- package/build/artifacts/contracts/offchain-helpers/SSTORE2DeployerContract.sol/SSTORE2DeployerContract.dbg.json +0 -4
- package/build/artifacts/contracts/offchain-helpers/SSTORE2DeployerContract.sol/SSTORE2DeployerContract.json +0 -134
- package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +0 -161
- package/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol +0 -126
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol +0 -242
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol +0 -146
- package/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol +0 -176
- package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +0 -129
- package/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol +0 -193
- package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultSCY.sol +0 -155
- package/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol +0 -182
- package/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol +0 -53
- package/contracts/libraries/helpers/SSTORE2Deployer.sol +0 -30
- package/contracts/libraries/solmate/SSTORE2.sol +0 -99
- package/contracts/offchain-helpers/SSTORE2DeployerContract.sol +0 -21
- package/deployments/43113-markets/benqi-market-10D931.json +0 -8
- package/deployments/43113-markets/benqi-market-9fbD64.json +0 -8
- package/deployments/43113-markets/benqi-market-A12361.json +0 -8
|
@@ -4,6 +4,7 @@ pragma solidity 0.8.15;
|
|
|
4
4
|
import "./base/ActionBaseMintRedeem.sol";
|
|
5
5
|
import "../../interfaces/IPMarket.sol";
|
|
6
6
|
import "../../interfaces/IPActionMintRedeem.sol";
|
|
7
|
+
import "../../libraries/Errors.sol";
|
|
7
8
|
|
|
8
9
|
contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
9
10
|
using MarketMathCore for MarketState;
|
|
@@ -143,8 +144,11 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
143
144
|
address[] calldata markets,
|
|
144
145
|
RouterSwapAllStruct calldata dataSwap
|
|
145
146
|
) external returns (uint256 netTokenOut, uint256[] memory amountsSwapped) {
|
|
146
|
-
|
|
147
|
-
|
|
147
|
+
if (dataSwap.tokens.length != dataSwap.kybercalls.length)
|
|
148
|
+
revert Errors.ArrayLengthMismatch();
|
|
149
|
+
|
|
150
|
+
if (dataYT.tokenRedeemScys.length != dataYT.scyAddrs.length)
|
|
151
|
+
revert Errors.ArrayLengthMismatch();
|
|
148
152
|
|
|
149
153
|
RouterTokenAmounts memory tokensOut = _newRouterTokenAmounts(dataSwap.tokens);
|
|
150
154
|
RouterTokenAmounts memory scysOut = _newRouterTokenAmounts(dataYT.scyAddrs);
|
|
@@ -189,7 +193,7 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
189
193
|
netTokenOut = _swapAllToOutputToken(tokensOut, dataSwap);
|
|
190
194
|
|
|
191
195
|
if (netTokenOut < dataSwap.minTokenOut)
|
|
192
|
-
|
|
196
|
+
revert Errors.RouterInsufficientTokenOut(netTokenOut, dataSwap.minTokenOut);
|
|
193
197
|
|
|
194
198
|
amountsSwapped = tokensOut.amounts;
|
|
195
199
|
|
|
@@ -221,10 +225,12 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
|
|
|
221
225
|
if (scys.amounts[i] == 0) continue;
|
|
222
226
|
|
|
223
227
|
_transferFrom(scys.tokens[i], msg.sender, scys.tokens[i], scys.amounts[i]);
|
|
224
|
-
uint256 amountOut = ISuperComposableYield(scys.tokens[i]).
|
|
228
|
+
uint256 amountOut = ISuperComposableYield(scys.tokens[i]).redeem(
|
|
225
229
|
address(this),
|
|
230
|
+
scys.amounts[i],
|
|
226
231
|
tokenRedeemScys[i],
|
|
227
|
-
1
|
|
232
|
+
1,
|
|
233
|
+
true
|
|
228
234
|
);
|
|
229
235
|
|
|
230
236
|
_addTokenAmount(tokensOut, tokenRedeemScys[i], amountOut);
|
|
@@ -3,6 +3,7 @@ pragma solidity 0.8.15;
|
|
|
3
3
|
|
|
4
4
|
import "../../interfaces/IPMarket.sol";
|
|
5
5
|
import "../../interfaces/IPActionMisc.sol";
|
|
6
|
+
import "../../libraries/Errors.sol";
|
|
6
7
|
|
|
7
8
|
contract ActionMisc is IPActionMisc {
|
|
8
9
|
using Math for uint256;
|
|
@@ -12,7 +13,7 @@ contract ActionMisc is IPActionMisc {
|
|
|
12
13
|
view
|
|
13
14
|
returns (uint96 lnImpliedRateMean)
|
|
14
15
|
{
|
|
15
|
-
|
|
16
|
+
if (secondsAgo == 0) revert Errors.RouterTimeRangeZero();
|
|
16
17
|
uint32[] memory secondsAgos = new uint32[](2);
|
|
17
18
|
secondsAgos[0] = secondsAgo;
|
|
18
19
|
secondsAgos[1] = 0;
|
|
@@ -4,6 +4,7 @@ pragma solidity 0.8.15;
|
|
|
4
4
|
import "./base/ActionBaseMintRedeem.sol";
|
|
5
5
|
import "../../interfaces/IPActionSwapPT.sol";
|
|
6
6
|
import "../../interfaces/IPMarket.sol";
|
|
7
|
+
import "../../libraries/Errors.sol";
|
|
7
8
|
|
|
8
9
|
contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
9
10
|
using MarketMathCore for MarketState;
|
|
@@ -24,13 +25,17 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
24
25
|
address market,
|
|
25
26
|
uint256 exactPtIn,
|
|
26
27
|
uint256 minScyOut
|
|
27
|
-
) external returns (uint256 netScyOut) {
|
|
28
|
+
) external returns (uint256 netScyOut, uint256 netScyFee) {
|
|
28
29
|
(, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
|
|
29
30
|
IERC20(address(PT)).safeTransferFrom(msg.sender, market, exactPtIn);
|
|
30
31
|
|
|
31
|
-
(netScyOut, ) = IPMarket(market).swapExactPtForScy(
|
|
32
|
+
(netScyOut, netScyFee) = IPMarket(market).swapExactPtForScy(
|
|
33
|
+
receiver,
|
|
34
|
+
exactPtIn,
|
|
35
|
+
EMPTY_BYTES
|
|
36
|
+
);
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
if (netScyOut < minScyOut) revert Errors.RouterInsufficientScyOut(netScyOut, minScyOut);
|
|
34
39
|
|
|
35
40
|
emit SwapPtAndScy(msg.sender, market, receiver, exactPtIn.neg(), netScyOut.Int());
|
|
36
41
|
}
|
|
@@ -45,7 +50,7 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
45
50
|
uint256 exactScyOut,
|
|
46
51
|
uint256 maxPtIn,
|
|
47
52
|
ApproxParams calldata guessPtIn
|
|
48
|
-
) external returns (uint256 netPtIn) {
|
|
53
|
+
) external returns (uint256 netPtIn, uint256 netScyFee) {
|
|
49
54
|
MarketState memory state = IPMarket(market).readState();
|
|
50
55
|
(, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
|
|
51
56
|
|
|
@@ -55,14 +60,20 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
55
60
|
block.timestamp,
|
|
56
61
|
guessPtIn
|
|
57
62
|
);
|
|
58
|
-
|
|
63
|
+
|
|
64
|
+
if (netPtIn > maxPtIn) revert Errors.RouterExceededLimitPtIn(netPtIn, maxPtIn);
|
|
59
65
|
|
|
60
66
|
IERC20(PT).safeTransferFrom(msg.sender, market, netPtIn);
|
|
61
67
|
|
|
62
|
-
|
|
68
|
+
uint256 netScyOut;
|
|
69
|
+
(netScyOut, netScyFee) = IPMarket(market).swapExactPtForScy(
|
|
70
|
+
receiver,
|
|
71
|
+
netPtIn,
|
|
72
|
+
EMPTY_BYTES
|
|
73
|
+
);
|
|
63
74
|
|
|
64
75
|
// fail-safe
|
|
65
|
-
|
|
76
|
+
if (netScyOut < exactScyOut) assert(false);
|
|
66
77
|
|
|
67
78
|
emit SwapPtAndScy(msg.sender, market, receiver, netPtIn.neg(), exactScyOut.Int());
|
|
68
79
|
}
|
|
@@ -72,17 +83,17 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
72
83
|
address market,
|
|
73
84
|
uint256 exactPtOut,
|
|
74
85
|
uint256 maxScyIn
|
|
75
|
-
) external returns (uint256 netScyIn) {
|
|
86
|
+
) external returns (uint256 netScyIn, uint256 netScyFee) {
|
|
76
87
|
MarketState memory state = IPMarket(market).readState();
|
|
77
88
|
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
78
89
|
|
|
79
90
|
(netScyIn, ) = state.swapScyForExactPt(YT.newIndex(), exactPtOut, block.timestamp);
|
|
80
91
|
|
|
81
|
-
|
|
92
|
+
if (netScyIn > maxScyIn) revert Errors.RouterExceededLimitScyIn(netScyIn, maxScyIn);
|
|
82
93
|
|
|
83
94
|
IERC20(SCY).safeTransferFrom(msg.sender, market, netScyIn);
|
|
84
95
|
|
|
85
|
-
IPMarket(market).swapScyForExactPt(receiver, exactPtOut, EMPTY_BYTES); // ignore return
|
|
96
|
+
(, netScyFee) = IPMarket(market).swapScyForExactPt(receiver, exactPtOut, EMPTY_BYTES); // ignore return
|
|
86
97
|
|
|
87
98
|
// no fail-safe since exactly netScyIn will go into the market
|
|
88
99
|
emit SwapPtAndScy(msg.sender, market, receiver, exactPtOut.Int(), netScyIn.neg());
|
|
@@ -94,12 +105,19 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
94
105
|
uint256 exactScyIn,
|
|
95
106
|
uint256 minPtOut,
|
|
96
107
|
ApproxParams calldata guessPtOut
|
|
97
|
-
) external returns (uint256 netPtOut) {
|
|
108
|
+
) external returns (uint256 netPtOut, uint256 netScyFee) {
|
|
98
109
|
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
99
110
|
|
|
100
111
|
IERC20(SCY).safeTransferFrom(msg.sender, market, exactScyIn);
|
|
101
112
|
|
|
102
|
-
netPtOut = _swapExactScyForPt(
|
|
113
|
+
(netPtOut, netScyFee) = _swapExactScyForPt(
|
|
114
|
+
receiver,
|
|
115
|
+
market,
|
|
116
|
+
YT,
|
|
117
|
+
exactScyIn,
|
|
118
|
+
minPtOut,
|
|
119
|
+
guessPtOut
|
|
120
|
+
);
|
|
103
121
|
|
|
104
122
|
emit SwapPtAndScy(msg.sender, market, receiver, netPtOut.Int(), exactScyIn.neg());
|
|
105
123
|
}
|
|
@@ -115,14 +133,14 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
115
133
|
uint256 minPtOut,
|
|
116
134
|
ApproxParams calldata guessPtOut,
|
|
117
135
|
TokenInput calldata input
|
|
118
|
-
) external payable returns (uint256 netPtOut) {
|
|
136
|
+
) external payable returns (uint256 netPtOut, uint256 netScyFee) {
|
|
119
137
|
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
120
138
|
|
|
121
139
|
// all output SCY is transferred directly to the market
|
|
122
140
|
uint256 netScyUseToBuyPt = _mintScyFromToken(address(market), address(SCY), 1, input);
|
|
123
141
|
|
|
124
142
|
// SCY is already in the market, hence doPull = false
|
|
125
|
-
netPtOut = _swapExactScyForPt(
|
|
143
|
+
(netPtOut, netScyFee) = _swapExactScyForPt(
|
|
126
144
|
receiver,
|
|
127
145
|
market,
|
|
128
146
|
YT,
|
|
@@ -150,13 +168,14 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
150
168
|
address market,
|
|
151
169
|
uint256 exactPtIn,
|
|
152
170
|
TokenOutput calldata output
|
|
153
|
-
) external returns (uint256 netTokenOut) {
|
|
171
|
+
) external returns (uint256 netTokenOut, uint256 netScyFee) {
|
|
154
172
|
(ISuperComposableYield SCY, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
|
|
155
173
|
|
|
156
174
|
IERC20(address(PT)).safeTransferFrom(msg.sender, market, exactPtIn);
|
|
157
175
|
|
|
158
176
|
// all output SCY is directly transferred to the SCY contract
|
|
159
|
-
|
|
177
|
+
uint256 netScyReceived;
|
|
178
|
+
(netScyReceived, netScyFee) = IPMarket(market).swapExactPtForScy(
|
|
160
179
|
address(SCY),
|
|
161
180
|
exactPtIn,
|
|
162
181
|
EMPTY_BYTES
|
|
@@ -182,7 +201,7 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
182
201
|
uint256 exactScyIn,
|
|
183
202
|
uint256 minPtOut,
|
|
184
203
|
ApproxParams calldata guessPtOut
|
|
185
|
-
) internal returns (uint256 netPtOut) {
|
|
204
|
+
) internal returns (uint256 netPtOut, uint256 netScyFee) {
|
|
186
205
|
MarketState memory state = IPMarket(market).readState();
|
|
187
206
|
|
|
188
207
|
(netPtOut, , ) = state.approxSwapExactScyForPt(
|
|
@@ -192,9 +211,9 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
|
|
|
192
211
|
guessPtOut
|
|
193
212
|
);
|
|
194
213
|
|
|
195
|
-
|
|
214
|
+
if (netPtOut < minPtOut) revert Errors.RouterInsufficientPtOut(netPtOut, minPtOut);
|
|
196
215
|
|
|
197
|
-
IPMarket(market).swapScyForExactPt(receiver, netPtOut, EMPTY_BYTES);
|
|
216
|
+
(, netScyFee) = IPMarket(market).swapScyForExactPt(receiver, netPtOut, EMPTY_BYTES);
|
|
198
217
|
// no fail-safe since exactly netPtOut >= minPtOut will be out
|
|
199
218
|
}
|
|
200
219
|
}
|
|
@@ -29,21 +29,22 @@ contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper {
|
|
|
29
29
|
uint256 exactPtIn,
|
|
30
30
|
uint256 minYtOut,
|
|
31
31
|
ApproxParams calldata guessTotalPtToSwap
|
|
32
|
-
) external returns (uint256 netYtOut) {
|
|
32
|
+
) external returns (uint256 netYtOut, uint256 netScyFee) {
|
|
33
33
|
(, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
|
|
34
34
|
MarketState memory state = IPMarket(market).readState();
|
|
35
35
|
|
|
36
36
|
PT.safeTransferFrom(msg.sender, market, exactPtIn);
|
|
37
37
|
|
|
38
38
|
uint256 totalPtToSwap;
|
|
39
|
-
(netYtOut, , totalPtToSwap, ) = state.approxSwapExactPtForYt(
|
|
39
|
+
(netYtOut, , totalPtToSwap, netScyFee) = state.approxSwapExactPtForYt(
|
|
40
40
|
YT.newIndex(),
|
|
41
41
|
exactPtIn,
|
|
42
42
|
block.timestamp,
|
|
43
43
|
guessTotalPtToSwap
|
|
44
44
|
);
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
if (netYtOut < minYtOut) revert Errors.RouterInsufficientYtOut(netYtOut, minYtOut);
|
|
47
|
+
|
|
47
48
|
IPMarket(market).swapExactPtForScy(
|
|
48
49
|
address(YT),
|
|
49
50
|
totalPtToSwap,
|
|
@@ -59,21 +60,21 @@ contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper {
|
|
|
59
60
|
uint256 exactYtIn,
|
|
60
61
|
uint256 minPtOut,
|
|
61
62
|
ApproxParams calldata guessTotalPtSwapped
|
|
62
|
-
) external returns (uint256 netPtOut) {
|
|
63
|
+
) external returns (uint256 netPtOut, uint256 netScyFee) {
|
|
63
64
|
(, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
64
65
|
MarketState memory state = IPMarket(market).readState();
|
|
65
66
|
|
|
66
67
|
YT.safeTransferFrom(msg.sender, address(YT), exactYtIn);
|
|
67
68
|
|
|
68
69
|
uint256 totalPtSwapped;
|
|
69
|
-
(netPtOut, , totalPtSwapped, ) = state.approxSwapExactYtForPt(
|
|
70
|
+
(netPtOut, , totalPtSwapped, netScyFee) = state.approxSwapExactYtForPt(
|
|
70
71
|
YT.newIndex(),
|
|
71
72
|
exactYtIn,
|
|
72
73
|
block.timestamp,
|
|
73
74
|
guessTotalPtSwapped
|
|
74
75
|
);
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
if (netPtOut < minPtOut) revert Errors.RouterInsufficientPtOut(netPtOut, minPtOut);
|
|
77
78
|
|
|
78
79
|
IPMarket(market).swapScyForExactPt(
|
|
79
80
|
address(this),
|
|
@@ -5,6 +5,7 @@ import "./base/ActionBaseMintRedeem.sol";
|
|
|
5
5
|
import "./base/CallbackHelper.sol";
|
|
6
6
|
import "../../interfaces/IPActionSwapYT.sol";
|
|
7
7
|
import "../../interfaces/IPMarket.sol";
|
|
8
|
+
import "../../libraries/Errors.sol";
|
|
8
9
|
|
|
9
10
|
contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
10
11
|
using Math for uint256;
|
|
@@ -37,12 +38,19 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
37
38
|
uint256 exactScyIn,
|
|
38
39
|
uint256 minYtOut,
|
|
39
40
|
ApproxParams memory guessYtOut
|
|
40
|
-
) external returns (uint256 netYtOut) {
|
|
41
|
+
) external returns (uint256 netYtOut, uint256 netScyFee) {
|
|
41
42
|
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
42
43
|
|
|
43
44
|
SCY.safeTransferFrom(msg.sender, address(YT), exactScyIn);
|
|
44
45
|
|
|
45
|
-
netYtOut = _swapExactScyForYt(
|
|
46
|
+
(netYtOut, netScyFee) = _swapExactScyForYt(
|
|
47
|
+
receiver,
|
|
48
|
+
market,
|
|
49
|
+
YT,
|
|
50
|
+
exactScyIn,
|
|
51
|
+
minYtOut,
|
|
52
|
+
guessYtOut
|
|
53
|
+
);
|
|
46
54
|
|
|
47
55
|
emit SwapYtAndScy(msg.sender, market, receiver, netYtOut.Int(), exactScyIn.neg());
|
|
48
56
|
}
|
|
@@ -62,12 +70,19 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
62
70
|
address market,
|
|
63
71
|
uint256 exactYtIn,
|
|
64
72
|
uint256 minScyOut
|
|
65
|
-
) external returns (uint256 netScyOut) {
|
|
73
|
+
) external returns (uint256 netScyOut, uint256 netScyFee) {
|
|
66
74
|
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
67
75
|
|
|
68
76
|
YT.safeTransferFrom(msg.sender, address(YT), exactYtIn);
|
|
69
77
|
|
|
70
|
-
netScyOut = _swapExactYtForScy(
|
|
78
|
+
(netScyOut, netScyFee) = _swapExactYtForScy(
|
|
79
|
+
receiver,
|
|
80
|
+
market,
|
|
81
|
+
SCY,
|
|
82
|
+
YT,
|
|
83
|
+
exactYtIn,
|
|
84
|
+
minScyOut
|
|
85
|
+
);
|
|
71
86
|
|
|
72
87
|
emit SwapYtAndScy(msg.sender, market, receiver, exactYtIn.neg(), netScyOut.Int());
|
|
73
88
|
}
|
|
@@ -86,12 +101,12 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
86
101
|
address market,
|
|
87
102
|
uint256 exactYtOut,
|
|
88
103
|
uint256 maxScyIn
|
|
89
|
-
) external returns (uint256 netScyIn) {
|
|
104
|
+
) external returns (uint256 netScyIn, uint256 netScyFee) {
|
|
90
105
|
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
91
106
|
|
|
92
107
|
uint256 preScyBalance = SCY.balanceOf(msg.sender);
|
|
93
108
|
|
|
94
|
-
IPMarket(market).swapExactPtForScy(
|
|
109
|
+
(, netScyFee) = IPMarket(market).swapExactPtForScy(
|
|
95
110
|
address(YT),
|
|
96
111
|
exactYtOut, // exactPtIn = exactYtOut
|
|
97
112
|
_encodeSwapScyForExactYt(msg.sender, receiver, maxScyIn)
|
|
@@ -118,7 +133,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
118
133
|
uint256 exactScyOut,
|
|
119
134
|
uint256 maxYtIn,
|
|
120
135
|
ApproxParams memory guessYtIn
|
|
121
|
-
) external returns (uint256 netYtIn) {
|
|
136
|
+
) external returns (uint256 netYtIn, uint256 netScyFee) {
|
|
122
137
|
MarketState memory state = IPMarket(market).readState();
|
|
123
138
|
(, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
124
139
|
|
|
@@ -129,15 +144,15 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
129
144
|
guessYtIn
|
|
130
145
|
);
|
|
131
146
|
|
|
132
|
-
|
|
147
|
+
if (netYtIn > maxYtIn) revert Errors.RouterExceededLimitYtIn(netYtIn, maxYtIn);
|
|
133
148
|
|
|
134
149
|
YT.safeTransferFrom(msg.sender, address(YT), netYtIn);
|
|
135
150
|
|
|
136
|
-
IPMarket(market).swapScyForExactPt(
|
|
151
|
+
(, netScyFee) = IPMarket(market).swapScyForExactPt(
|
|
137
152
|
address(YT),
|
|
138
153
|
netYtIn, // exactPtOut = netYtIn
|
|
139
154
|
_encodeSwapYtForScy(receiver, exactScyOut)
|
|
140
|
-
);
|
|
155
|
+
);
|
|
141
156
|
|
|
142
157
|
emit SwapYtAndScy(msg.sender, market, receiver, netYtIn.neg(), exactScyOut.Int());
|
|
143
158
|
}
|
|
@@ -148,12 +163,12 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
148
163
|
uint256 minYtOut,
|
|
149
164
|
ApproxParams memory guessYtOut,
|
|
150
165
|
TokenInput calldata input
|
|
151
|
-
) external payable returns (uint256 netYtOut) {
|
|
166
|
+
) external payable returns (uint256 netYtOut, uint256 netScyFee) {
|
|
152
167
|
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
153
168
|
|
|
154
169
|
uint256 netScyUsedToBuyYT = _mintScyFromToken(address(YT), address(SCY), 1, input);
|
|
155
170
|
|
|
156
|
-
netYtOut = _swapExactScyForYt(
|
|
171
|
+
(netYtOut, netScyFee) = _swapExactScyForYt(
|
|
157
172
|
receiver,
|
|
158
173
|
market,
|
|
159
174
|
YT,
|
|
@@ -177,12 +192,14 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
177
192
|
address market,
|
|
178
193
|
uint256 netYtIn,
|
|
179
194
|
TokenOutput calldata output
|
|
180
|
-
) external returns (uint256 netTokenOut) {
|
|
195
|
+
) external returns (uint256 netTokenOut, uint256 netScyFee) {
|
|
181
196
|
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
182
197
|
|
|
183
198
|
YT.safeTransferFrom(msg.sender, address(YT), netYtIn);
|
|
184
199
|
|
|
185
|
-
uint256 netScyOut
|
|
200
|
+
uint256 netScyOut;
|
|
201
|
+
|
|
202
|
+
(netScyOut, netScyFee) = _swapExactYtForScy(address(SCY), market, SCY, YT, netYtIn, 1);
|
|
186
203
|
|
|
187
204
|
netTokenOut = _redeemScyToToken(receiver, address(SCY), netScyOut, output, false);
|
|
188
205
|
|
|
@@ -203,7 +220,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
203
220
|
uint256 exactScyIn,
|
|
204
221
|
uint256 minYtOut,
|
|
205
222
|
ApproxParams memory guessYtOut
|
|
206
|
-
) internal returns (uint256 netYtOut) {
|
|
223
|
+
) internal returns (uint256 netYtOut, uint256 netScyFee) {
|
|
207
224
|
MarketState memory state = IPMarket(market).readState();
|
|
208
225
|
|
|
209
226
|
(netYtOut, , ) = state.approxSwapExactScyForYt(
|
|
@@ -214,9 +231,9 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
214
231
|
);
|
|
215
232
|
|
|
216
233
|
// early-check
|
|
217
|
-
|
|
234
|
+
if (netYtOut < minYtOut) revert Errors.RouterInsufficientYtOut(netYtOut, minYtOut);
|
|
218
235
|
|
|
219
|
-
IPMarket(market).swapExactPtForScy(
|
|
236
|
+
(, netScyFee) = IPMarket(market).swapExactPtForScy(
|
|
220
237
|
address(YT),
|
|
221
238
|
netYtOut, // exactPtIn = netYtOut
|
|
222
239
|
_encodeSwapExactScyForYt(receiver, minYtOut)
|
|
@@ -230,10 +247,10 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
|
|
|
230
247
|
IPYieldToken YT,
|
|
231
248
|
uint256 exactYtIn,
|
|
232
249
|
uint256 minScyOut
|
|
233
|
-
) internal returns (uint256 netScyOut) {
|
|
250
|
+
) internal returns (uint256 netScyOut, uint256 netScyFee) {
|
|
234
251
|
uint256 preScyBalance = SCY.balanceOf(receiver);
|
|
235
252
|
|
|
236
|
-
IPMarket(market).swapScyForExactPt(
|
|
253
|
+
(, netScyFee) = IPMarket(market).swapScyForExactPt(
|
|
237
254
|
address(YT),
|
|
238
255
|
exactYtIn, // exactPtOut = exactYtIn
|
|
239
256
|
_encodeSwapYtForScy(receiver, minScyOut)
|
|
@@ -5,6 +5,7 @@ import "../../../libraries/kyberswap/KyberSwapHelper.sol";
|
|
|
5
5
|
import "../../../libraries/helpers/TokenHelper.sol";
|
|
6
6
|
import "../../../interfaces/ISuperComposableYield.sol";
|
|
7
7
|
import "../../../interfaces/IPYieldToken.sol";
|
|
8
|
+
import "../../../libraries/Errors.sol";
|
|
8
9
|
|
|
9
10
|
// solhint-disable no-empty-blocks
|
|
10
11
|
abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
|
|
@@ -57,21 +58,27 @@ abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
|
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
if (output.tokenRedeemScy == output.tokenOut) {
|
|
60
|
-
netTokenOut = ISuperComposableYield(SCY).
|
|
61
|
+
netTokenOut = ISuperComposableYield(SCY).redeem(
|
|
61
62
|
receiver,
|
|
63
|
+
netScyIn,
|
|
62
64
|
output.tokenRedeemScy,
|
|
63
|
-
output.minTokenOut
|
|
65
|
+
output.minTokenOut,
|
|
66
|
+
true
|
|
64
67
|
);
|
|
65
68
|
} else {
|
|
66
|
-
uint256 netTokenRedeemed = ISuperComposableYield(SCY).
|
|
69
|
+
uint256 netTokenRedeemed = ISuperComposableYield(SCY).redeem(
|
|
67
70
|
address(this),
|
|
71
|
+
netScyIn,
|
|
68
72
|
output.tokenRedeemScy,
|
|
69
|
-
1
|
|
73
|
+
1,
|
|
74
|
+
true
|
|
70
75
|
);
|
|
71
76
|
_kyberswap(output.tokenRedeemScy, netTokenRedeemed, output.kybercall);
|
|
72
77
|
|
|
73
78
|
netTokenOut = _selfBalance(output.tokenOut);
|
|
74
|
-
|
|
79
|
+
|
|
80
|
+
if (netTokenOut < output.minTokenOut)
|
|
81
|
+
revert Errors.RouterInsufficientTokenOut(netTokenOut, output.minTokenOut);
|
|
75
82
|
|
|
76
83
|
_transferOut(output.tokenOut, receiver, netTokenOut);
|
|
77
84
|
}
|
|
@@ -91,7 +98,7 @@ abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
|
|
|
91
98
|
_mintScyFromToken(YT, SCY, 1, input);
|
|
92
99
|
|
|
93
100
|
netPyOut = IPYieldToken(YT).mintPY(receiver, receiver);
|
|
94
|
-
|
|
101
|
+
if (netPyOut < minPyOut) revert Errors.RouterInsufficientPYOut(netPyOut, minPyOut);
|
|
95
102
|
}
|
|
96
103
|
|
|
97
104
|
/**
|
|
@@ -133,7 +140,7 @@ abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
|
|
|
133
140
|
}
|
|
134
141
|
|
|
135
142
|
netPyOut = IPYieldToken(YT).mintPY(receiver, receiver);
|
|
136
|
-
|
|
143
|
+
if (netPyOut < minPyOut) revert Errors.RouterInsufficientPYOut(netPyOut, minPyOut);
|
|
137
144
|
}
|
|
138
145
|
|
|
139
146
|
function _redeemPyToScy(
|
|
@@ -152,6 +159,6 @@ abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
|
|
|
152
159
|
}
|
|
153
160
|
|
|
154
161
|
netScyOut = IPYieldToken(YT).redeemPY(receiver);
|
|
155
|
-
|
|
162
|
+
if (netScyOut < minScyOut) revert Errors.RouterInsufficientScyOut(netScyOut, minScyOut);
|
|
156
163
|
}
|
|
157
164
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.15;
|
|
3
|
+
|
|
4
|
+
interface IBooster {
|
|
5
|
+
function crv() external view returns (address);
|
|
6
|
+
|
|
7
|
+
function poolLength() external view returns (uint256);
|
|
8
|
+
|
|
9
|
+
function poolInfo(uint256)
|
|
10
|
+
external
|
|
11
|
+
view
|
|
12
|
+
returns (
|
|
13
|
+
address,
|
|
14
|
+
address,
|
|
15
|
+
address,
|
|
16
|
+
address,
|
|
17
|
+
address,
|
|
18
|
+
bool
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
function deposit(
|
|
22
|
+
uint256 _pid,
|
|
23
|
+
uint256 _amount,
|
|
24
|
+
bool _stake
|
|
25
|
+
) external returns (bool);
|
|
26
|
+
|
|
27
|
+
function depositAll(uint256 _pid, bool _stake) external returns (bool);
|
|
28
|
+
|
|
29
|
+
function withdraw(uint256 _pid, uint256 _amount) external returns (bool);
|
|
30
|
+
|
|
31
|
+
function withdrawAll(uint256 _pid) external returns (bool);
|
|
32
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.15;
|
|
3
|
+
|
|
4
|
+
interface ICrvDepositor {
|
|
5
|
+
function crv() external view returns (address);
|
|
6
|
+
|
|
7
|
+
function minter() external view returns (address);
|
|
8
|
+
|
|
9
|
+
function deposit(
|
|
10
|
+
uint256 _amount,
|
|
11
|
+
bool _lock,
|
|
12
|
+
address _stakeAddress
|
|
13
|
+
) external;
|
|
14
|
+
|
|
15
|
+
//deposit crv for cvxCrv
|
|
16
|
+
//can locking immediately or defer locking to someone else by paying a fee.
|
|
17
|
+
//while users can choose to lock or defer, this is mostly in place so that
|
|
18
|
+
//the cvx reward contract isnt costly to claim rewards
|
|
19
|
+
function depositAll(bool _lock, address _stakeAddress) external;
|
|
20
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.15;
|
|
3
|
+
|
|
4
|
+
interface IRewards {
|
|
5
|
+
function operator() external view returns (address);
|
|
6
|
+
|
|
7
|
+
function stake(address, uint256) external;
|
|
8
|
+
|
|
9
|
+
function stakeFor(address, uint256) external;
|
|
10
|
+
|
|
11
|
+
function withdraw(uint256, bool) external returns (bool);
|
|
12
|
+
|
|
13
|
+
function withdrawAndUnwrap(uint256, bool) external returns (bool);
|
|
14
|
+
|
|
15
|
+
function exit(address) external;
|
|
16
|
+
|
|
17
|
+
function getReward() external;
|
|
18
|
+
|
|
19
|
+
function queueNewRewards(uint256) external;
|
|
20
|
+
|
|
21
|
+
function notifyRewardAmount(uint256) external;
|
|
22
|
+
|
|
23
|
+
function addExtraReward(address) external;
|
|
24
|
+
|
|
25
|
+
function rewardToken() external returns (address);
|
|
26
|
+
|
|
27
|
+
function rewardPerToken() external returns (uint256);
|
|
28
|
+
|
|
29
|
+
function rewardPerTokenStored() external view returns (uint256);
|
|
30
|
+
|
|
31
|
+
function extraRewardsLength() external view returns (uint256);
|
|
32
|
+
|
|
33
|
+
function extraRewards(uint256) external returns (address);
|
|
34
|
+
|
|
35
|
+
function stakingToken() external returns (address);
|
|
36
|
+
|
|
37
|
+
function lastTimeRewardApplicable() external view returns (uint256);
|
|
38
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.15;
|
|
3
|
+
|
|
4
|
+
interface ICrvPool {
|
|
5
|
+
function get_virtual_price() external view returns (uint256);
|
|
6
|
+
|
|
7
|
+
function get_dy(
|
|
8
|
+
int128 i,
|
|
9
|
+
int128 j,
|
|
10
|
+
uint256 dx // The amount of i being exchanged.
|
|
11
|
+
) external view returns (uint256);
|
|
12
|
+
|
|
13
|
+
function exchange(
|
|
14
|
+
int128 i,
|
|
15
|
+
int128 j,
|
|
16
|
+
uint256 dx,
|
|
17
|
+
uint256 min_dy, // The amount of i being exchanged.
|
|
18
|
+
address _receiver
|
|
19
|
+
) external returns (uint256);
|
|
20
|
+
|
|
21
|
+
function add_liquidity(
|
|
22
|
+
uint256[] memory _deposit_amount,
|
|
23
|
+
uint256 _min_amount,
|
|
24
|
+
address _receiver
|
|
25
|
+
) external returns (uint256);
|
|
26
|
+
|
|
27
|
+
function add_liquidity(
|
|
28
|
+
uint256[2] memory _deposit_amount,
|
|
29
|
+
uint256 _min_amount
|
|
30
|
+
) external;
|
|
31
|
+
|
|
32
|
+
function add_liquidity(
|
|
33
|
+
uint256[3] memory _deposit_amount,
|
|
34
|
+
uint256 _min_amount
|
|
35
|
+
) external;
|
|
36
|
+
|
|
37
|
+
function remove_liquidity(
|
|
38
|
+
uint256 _burn_amount,
|
|
39
|
+
uint256[] memory _min_amounts,
|
|
40
|
+
address _receiver
|
|
41
|
+
) external returns (uint256[] memory);
|
|
42
|
+
|
|
43
|
+
function remove_liquidity_one_coin(
|
|
44
|
+
uint256 _burn_amount,
|
|
45
|
+
int128 i,
|
|
46
|
+
uint256 _min_amount
|
|
47
|
+
) external;
|
|
48
|
+
|
|
49
|
+
function calc_token_amount(uint256[] memory _amounts, bool _is_deposit)
|
|
50
|
+
external
|
|
51
|
+
view
|
|
52
|
+
returns (uint256);
|
|
53
|
+
|
|
54
|
+
function calc_token_amount(uint256[2] memory _amounts, bool _is_deposit)
|
|
55
|
+
external
|
|
56
|
+
view
|
|
57
|
+
returns (uint256);
|
|
58
|
+
|
|
59
|
+
function calc_token_amount(uint256[3] memory _amounts, bool _is_deposit)
|
|
60
|
+
external
|
|
61
|
+
view
|
|
62
|
+
returns (uint256);
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
function calc_withdraw_one_coin(uint256 _burn_amount, int128 i)
|
|
66
|
+
external
|
|
67
|
+
view
|
|
68
|
+
returns (uint256);
|
|
69
|
+
}
|