@pendle/core-v2 0.6.8 → 0.7.0
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/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +751 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +4 -0
- package/build/artifacts/contracts/{core/PendleSCYImpl → SuperComposableYield/SCY-implementations}/AaveV3/WadRayMath.sol/WadRayMath.json +3 -3
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +27 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +761 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.json +635 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +609 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.json +653 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +622 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +622 -0
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/{ISuperComposableYield.sol/ISuperComposableYield.json → base-implementations/SCYBase.sol/SCYBase.json} +221 -141
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +4 -0
- package/build/artifacts/contracts/SuperComposableYield/{implementations → base-implementations}/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +247 -223
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol/CelerReceiver.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol/CelerReceiver.json +128 -0
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSender.sol/CelerSender.dbg.json +4 -0
- package/build/artifacts/contracts/{SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.json → core/LiquidityMining/CelerAbstracts/CelerSender.sol/CelerSender.json} +29 -33
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol/PendleGaugeController.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol/PendleGaugeController.json +193 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.json +255 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.json +318 -0
- package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +4 -0
- package/build/artifacts/contracts/{interfaces/IPVotingEscrow.sol/IVotingEscrowPendle.json → core/LiquidityMining/PendleGauge.sol/PendleGauge.json} +57 -65
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.json +707 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol/VotingControllerStorage.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol/VotingControllerStorage.json +342 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +547 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +353 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol/VotingEscrowToken.dbg.json +4 -0
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol/VotingEscrowToken.json +138 -0
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +4 -0
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +922 -0
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +4 -0
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +345 -0
- package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +4 -0
- package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +254 -0
- 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 +2 -20
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +4 -0
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +445 -0
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +4 -0
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +344 -0
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +4 -0
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +750 -0
- package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
- package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +123 -77
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +39 -42
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json +163 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json +0 -13
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.json +1 -14
- package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +4 -0
- package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.json +10 -0
- package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.json +39 -0
- 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/IBenQiComptroller.sol/IBenQiComptroller.json +13 -0
- package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.json +74 -0
- package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/{IVePToken.sol/IVePToken.json → ICelerMessageBus.sol/ICelerMessageBus.json} +21 -11
- package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.json +45 -0
- package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +4 -0
- package/build/artifacts/contracts/{core/PendleBaseToken.sol/PendleBaseToken.json → interfaces/IERC4626.sol/IERC4626.json} +53 -68
- package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.json +962 -0
- package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +122 -58
- package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.json +36 -21
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +116 -81
- package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.json +109 -0
- package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.json +132 -0
- package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.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 +35 -54
- package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.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 +31 -0
- package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.json +5 -5
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +99 -0
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.json +167 -0
- package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.json +148 -0
- 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/IPYieldToken.sol/IPYieldToken.json +85 -83
- package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/{IPBaseToken.sol/IPBaseToken.json → IQiAvax.sol/IQiAvax.json} +106 -15
- package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.json +117 -0
- package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.json +117 -0
- package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +4 -0
- package/build/artifacts/contracts/{periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json → interfaces/IRewardManager.sol/IRewardManager.json} +12 -14
- package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +4 -0
- package/build/artifacts/contracts/{SuperComposableYield/implementations/SCYBase.sol/SCYBase.json → interfaces/ISuperComposableYield.sol/ISuperComposableYield.json} +183 -181
- 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/IWXBTRFLY.sol/IWXBTRFLY.json +13 -0
- package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.json +13 -0
- package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.json +13 -0
- package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +4 -0
- package/build/artifacts/contracts/{SuperComposableYield/implementations → libraries}/RewardManager.sol/RewardManager.json +44 -33
- package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.json +101 -0
- package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/{SCYIndex.sol → SCY/SCYIndex.sol}/SCYIndexLib.json +3 -3
- package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +4 -0
- package/build/artifacts/contracts/{SuperComposableYield → libraries/SCY}/SCYUtils.sol/SCYUtils.json +3 -3
- package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/{math/MarketMathAux.sol/MarketMathAux.json → VeBalanceLib.sol/VeBalanceLib.json} +4 -4
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +10 -0
- package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.json +2 -2
- package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.json +10 -0
- package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.json +10 -0
- package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +4 -0
- package/build/artifacts/contracts/{core/actions/base/ActionType.sol/ActionType.json → libraries/helpers/TokenHelper.sol/TokenHelper.json} +2 -2
- package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +2 -2
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.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 +4 -0
- package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +10 -0
- package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.json +10 -0
- package/build/artifacts/contracts/libraries/solmate/LibRLP.sol/LibRLP.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/solmate/LibRLP.sol/LibRLP.json +10 -0
- package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.json +10 -0
- package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/{JoeLibrary.sol → traderjoe/JoeLibrary.sol}/JoeLibrary.json +3 -3
- package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +4 -0
- package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json +24 -0
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +862 -0
- package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
- package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.json +2 -2
- package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +147 -0
- package/contracts/{core/PendleSCYImpl → SuperComposableYield/SCY-implementations}/AaveV3/WadRayMath.sol +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +74 -0
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +187 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol +123 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +99 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol +245 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +107 -0
- package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +120 -0
- package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +197 -0
- package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +131 -0
- package/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol +47 -0
- package/contracts/core/LiquidityMining/CelerAbstracts/CelerSender.sol +52 -0
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol +141 -0
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol +30 -0
- package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol +22 -0
- package/contracts/core/LiquidityMining/PendleGauge.sol +118 -0
- package/contracts/core/LiquidityMining/README.md +63 -0
- package/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol +323 -0
- package/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol +224 -0
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +241 -0
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +73 -0
- package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol +53 -0
- package/contracts/core/{PendleMarket.sol → Market/PendleMarket.sol} +139 -103
- package/contracts/core/{PendleMarketFactory.sol → Market/PendleMarketFactory.sol} +62 -19
- package/contracts/core/PendleERC20.sol +358 -0
- package/contracts/core/PendleERC20Permit.sol +84 -0
- package/contracts/core/PendleRouter.sol +6 -12
- package/contracts/core/YieldContracts/InterestManagerYT.sol +87 -0
- package/contracts/core/YieldContracts/PendlePrincipalToken.sol +52 -0
- package/contracts/core/{PendleYieldContractFactory.sol → YieldContracts/PendleYieldContractFactory.sol} +46 -25
- package/contracts/core/YieldContracts/PendleYieldToken.sol +340 -0
- package/contracts/core/actions/ActionCallback.sol +63 -43
- package/contracts/core/actions/ActionCore.sol +95 -78
- package/contracts/core/actions/ActionYT.sol +35 -86
- package/contracts/core/actions/base/ActionSCYAndPTBase.sol +133 -78
- package/contracts/core/actions/base/ActionSCYAndPYBase.sol +31 -46
- package/contracts/core/actions/base/ActionSCYAndYTBase.sol +127 -45
- package/contracts/core/actions/base/CallbackHelper.sol +81 -0
- package/contracts/interfaces/IAToken.sol +11 -1
- package/contracts/interfaces/IAavePool.sol +1 -1
- package/contracts/interfaces/IAaveRewardsController.sol +1 -1
- package/contracts/interfaces/IBenQiComptroller.sol +3 -1
- package/contracts/interfaces/IBenQiInterestRateModel.sol +16 -0
- package/contracts/interfaces/ICelerMessageBus.sol +28 -0
- package/contracts/interfaces/ICelerMessageReceiverApp.sol +25 -0
- package/contracts/interfaces/IERC4626.sol +39 -0
- package/contracts/interfaces/IJoeRouter01.sol +1 -1
- package/contracts/interfaces/IJoeRouter02.sol +52 -0
- package/contracts/interfaces/IPActionCore.sol +44 -27
- package/contracts/interfaces/IPActionYT.sol +12 -9
- package/contracts/interfaces/IPAllAction.sol +2 -3
- package/contracts/interfaces/IPGaugeController.sol +22 -0
- package/contracts/interfaces/IPGaugeControllerMainchain.sol +12 -0
- package/contracts/interfaces/IPGovernanceManager.sol +1 -1
- package/contracts/interfaces/IPInterestManagerYT.sol +9 -0
- package/contracts/interfaces/IPMarket.sol +13 -13
- package/contracts/interfaces/IPMarketAddRemoveCallback.sol +3 -3
- package/contracts/interfaces/IPMarketFactory.sol +8 -1
- package/contracts/interfaces/IPMarketSwapCallback.sol +1 -1
- package/contracts/interfaces/IPPermissionsV2Upg.sol +1 -1
- package/contracts/interfaces/IPPrincipalToken.sol +9 -5
- package/contracts/interfaces/IPRouterStatic.sol +1 -1
- package/contracts/interfaces/IPVeToken.sol +10 -5
- package/contracts/interfaces/IPVotingController.sol +21 -0
- package/contracts/interfaces/IPVotingEscrow.sol +14 -22
- package/contracts/interfaces/IPYieldContractFactory.sol +1 -1
- package/contracts/interfaces/IPYieldToken.sol +17 -17
- package/contracts/interfaces/IQiAvax.sol +31 -0
- package/contracts/interfaces/IQiErc20.sol +1 -1
- package/contracts/interfaces/IQiToken.sol +22 -1
- package/contracts/interfaces/IREDACTEDStaking.sol +1 -1
- package/contracts/interfaces/IRewardManager.sol +9 -0
- package/contracts/interfaces/ISuperComposableYield.sol +182 -0
- package/contracts/interfaces/IWETH.sol +1 -1
- package/contracts/interfaces/IWXBTRFLY.sol +3 -1
- package/contracts/interfaces/IWstETH.sol +3 -1
- package/contracts/interfaces/IYearnVault.sol +3 -1
- package/contracts/libraries/RewardManager.sol +78 -0
- package/contracts/libraries/RewardManagerAbstract.sol +81 -0
- package/contracts/libraries/{SCYIndex.sol → SCY/SCYIndex.sol} +8 -8
- package/contracts/libraries/SCY/SCYUtils.sol +18 -0
- package/contracts/libraries/VeBalanceLib.sol +114 -0
- package/contracts/libraries/helpers/ArrayLib.sol +65 -0
- package/contracts/libraries/helpers/ExpiryUtilsLib.sol +1 -1
- package/contracts/libraries/helpers/MiniDeployer.sol +23 -0
- package/contracts/libraries/helpers/MiniHelpers.sol +15 -0
- package/contracts/libraries/helpers/TokenHelper.sol +105 -0
- package/contracts/libraries/math/LogExpMath.sol +59 -1
- package/contracts/libraries/math/MarketApproxLib.sol +167 -164
- package/contracts/libraries/math/MarketMathCore.sol +106 -25
- package/contracts/libraries/math/Math.sol +28 -21
- package/contracts/libraries/math/WeekMath.sol +19 -0
- package/contracts/libraries/solmate/Bytes32AddressLib.sol +14 -0
- package/contracts/libraries/solmate/LibRLP.sol +30 -0
- package/contracts/libraries/solmate/SSTORE2.sol +99 -0
- package/contracts/libraries/{JoeLibrary.sol → traderjoe/JoeLibrary.sol} +3 -2
- package/contracts/{periphery → libraries/traderjoe}/PendleJoeSwapHelperUpg.sol +8 -10
- package/contracts/{core → offchain-helpers}/RouterStatic.sol +24 -19
- package/contracts/periphery/PendleGovernanceManager.sol +1 -1
- package/contracts/periphery/PermissionsV2Upg.sol +1 -1
- package/package.json +1 -1
- package/typechain-types/ActionCore.ts +169 -96
- package/typechain-types/ActionSCYAndPTBase.ts +210 -0
- package/typechain-types/ActionSCYAndPYBase.ts +0 -13
- package/typechain-types/ActionSCYAndYTBase.ts +8 -21
- package/typechain-types/ActionYT.ts +73 -64
- package/typechain-types/BeaconProxy.ts +97 -0
- package/typechain-types/CelerReceiver.ts +267 -0
- package/typechain-types/CelerSender.ts +197 -0
- package/typechain-types/ERC1967Upgrade.ts +97 -0
- package/typechain-types/ERC20Permit.ts +521 -0
- package/typechain-types/IAToken.ts +55 -0
- package/typechain-types/IBeacon.ts +87 -0
- package/typechain-types/IBenQiComptroller.ts +13 -0
- package/typechain-types/IBenQiInterestRateModel.ts +162 -0
- package/typechain-types/ICelerMessageBus.ts +134 -0
- package/typechain-types/ICelerMessageReceiverApp.ts +120 -0
- package/typechain-types/IERC1822Proxiable.ts +87 -0
- package/typechain-types/IERC20Permit.ts +175 -0
- package/typechain-types/IERC4626.ts +463 -0
- package/typechain-types/IJoeRouter02.ts +1420 -0
- package/typechain-types/IPActionCore.ts +169 -83
- package/typechain-types/IPActionYT.ts +65 -43
- package/typechain-types/IPAllAction.ts +190 -137
- package/typechain-types/IPGauge.ts +104 -0
- package/typechain-types/IPGaugeController.ts +191 -0
- package/typechain-types/IPGaugeControllerMainchain.ts +236 -0
- package/typechain-types/IPMarket.ts +73 -74
- package/typechain-types/IPMarketFactory.ts +27 -0
- package/typechain-types/IPPrincipalToken.ts +8 -20
- package/typechain-types/IPVeToken.ts +198 -0
- package/typechain-types/IPVotingController.ts +179 -0
- package/typechain-types/IPVotingEscrow.ts +217 -0
- package/typechain-types/IPVotingEscrowController.ts +154 -0
- package/typechain-types/IPYieldToken.ts +176 -213
- package/typechain-types/IQiAvax.ts +551 -0
- package/typechain-types/IQiErc20.ts +171 -0
- package/typechain-types/IQiToken.ts +171 -0
- package/typechain-types/IRewardManager.ts +16 -87
- package/typechain-types/ISuperComposableYield.ts +283 -269
- package/typechain-types/IWXBTRFLY.ts +13 -0
- package/typechain-types/IWstETH.ts +13 -0
- package/typechain-types/IYearnVault.ts +13 -0
- package/typechain-types/PendleAaveV3SCY.ts +382 -477
- package/typechain-types/PendleBtrflyScy.ts +287 -348
- package/typechain-types/PendleERC20.ts +339 -0
- package/typechain-types/PendleERC20Permit.ts +443 -0
- package/typechain-types/PendleERC4626SCY.ts +801 -0
- package/typechain-types/PendleGauge.ts +276 -0
- package/typechain-types/PendleGaugeController.ts +346 -0
- package/typechain-types/PendleGaugeControllerMainchain.ts +410 -0
- package/typechain-types/PendleGaugeControllerSidechain.ts +524 -0
- package/typechain-types/PendleJoeLpSCY.ts +837 -0
- package/typechain-types/PendleJoeSwapHelperUpg.ts +0 -13
- package/typechain-types/PendleMarket.ts +265 -151
- package/typechain-types/PendleMarketFactory.ts +111 -16
- package/typechain-types/PendleMarketRewards.ts +1317 -0
- package/typechain-types/PendlePrincipalToken.ts +103 -130
- package/typechain-types/PendleQiTokenHelper.ts +57 -0
- package/typechain-types/PendleQiTokenSCY.ts +991 -0
- package/typechain-types/PendleRouter.ts +0 -19
- package/typechain-types/PendleVotingController.ts +1042 -0
- package/typechain-types/PendleWstEthSCY.ts +813 -0
- package/typechain-types/PendleYearnVaultScy.ts +278 -339
- package/typechain-types/PendleYieldContractFactory.ts +43 -27
- package/typechain-types/PendleYieldToken.ts +297 -428
- package/typechain-types/RewardManager.ts +70 -69
- package/typechain-types/RewardManagerMini.ts +200 -0
- package/typechain-types/SCYBase.ts +276 -335
- package/typechain-types/SCYBaseWithRewards.ts +367 -424
- package/typechain-types/VotingControllerStorage.ts +507 -0
- package/typechain-types/VotingEscrowPendleMainchain.ts +854 -0
- package/typechain-types/VotingEscrowPendleSidechain.ts +546 -0
- package/typechain-types/VotingEscrowToken.ts +251 -0
- package/typechain-types/factories/ActionCallback__factory.ts +1 -1
- package/typechain-types/factories/ActionCore__factory.ts +122 -80
- package/typechain-types/factories/ActionRedeem__factory.ts +1 -1
- package/typechain-types/factories/ActionSCYAndPTBase__factory.ts +187 -0
- package/typechain-types/factories/ActionSCYAndPYBase__factory.ts +0 -13
- package/typechain-types/factories/ActionSCYAndYTBase__factory.ts +1 -14
- package/typechain-types/factories/ActionYT__factory.ts +39 -48
- package/typechain-types/factories/BeaconProxy__factory.ts +141 -0
- package/typechain-types/factories/CelerReceiver__factory.ts +140 -0
- package/typechain-types/factories/CelerSender__factory.ts +85 -0
- package/typechain-types/factories/ERC1967Upgrade__factory.ts +71 -0
- package/typechain-types/factories/ERC20Permit__factory.ts +368 -0
- package/typechain-types/factories/ERC20__factory.ts +1 -1
- package/typechain-types/factories/IAToken__factory.ts +39 -0
- package/typechain-types/factories/IBeacon__factory.ts +36 -0
- package/typechain-types/factories/IBenQiComptroller__factory.ts +13 -0
- package/typechain-types/factories/IBenQiInterestRateModel__factory.ts +93 -0
- package/typechain-types/factories/ICelerMessageBus__factory.ts +68 -0
- package/typechain-types/factories/ICelerMessageReceiverApp__factory.ts +64 -0
- package/typechain-types/factories/IERC1822Proxiable__factory.ts +39 -0
- package/typechain-types/factories/IERC20Permit__factory.ts +98 -0
- package/typechain-types/factories/IERC4626__factory.ts +330 -0
- package/typechain-types/factories/IJoeRouter02__factory.ts +974 -0
- package/typechain-types/factories/IPActionCore__factory.ts +122 -58
- package/typechain-types/factories/IPActionYT__factory.ts +36 -21
- package/typechain-types/factories/IPAllAction__factory.ts +116 -81
- package/typechain-types/factories/IPGaugeControllerMainchain__factory.ts +151 -0
- package/typechain-types/factories/IPGaugeController__factory.ts +124 -0
- package/typechain-types/factories/IPGauge__factory.ts +42 -0
- package/typechain-types/factories/IPMarketFactory__factory.ts +31 -0
- package/typechain-types/factories/IPMarket__factory.ts +35 -54
- package/typechain-types/factories/IPPrincipalToken__factory.ts +5 -5
- package/typechain-types/factories/IPVeToken__factory.ts +111 -0
- package/typechain-types/factories/IPVotingController__factory.ts +182 -0
- package/typechain-types/factories/IPVotingEscrowController__factory.ts +80 -0
- package/typechain-types/factories/IPVotingEscrow__factory.ts +163 -0
- package/typechain-types/factories/IPYieldToken__factory.ts +85 -83
- package/typechain-types/factories/IQiAvax__factory.ts +362 -0
- package/typechain-types/factories/IQiErc20__factory.ts +117 -0
- package/typechain-types/factories/IQiToken__factory.ts +117 -0
- package/typechain-types/factories/IRewardManager__factory.ts +5 -47
- package/typechain-types/factories/ISuperComposableYield__factory.ts +201 -138
- package/typechain-types/factories/IWXBTRFLY__factory.ts +13 -0
- package/typechain-types/factories/IWstETH__factory.ts +13 -0
- package/typechain-types/factories/IYearnVault__factory.ts +13 -0
- package/typechain-types/factories/PendleAaveV3SCY__factory.ts +246 -315
- package/typechain-types/factories/PendleBtrflyScy__factory.ts +200 -234
- package/typechain-types/factories/PendleERC20Permit__factory.ts +405 -0
- package/typechain-types/factories/PendleERC20__factory.ts +327 -0
- package/typechain-types/factories/PendleERC4626SCY__factory.ts +678 -0
- package/typechain-types/factories/PendleGaugeControllerMainchain__factory.ts +332 -0
- package/typechain-types/factories/PendleGaugeControllerSidechain__factory.ts +391 -0
- package/typechain-types/factories/PendleGaugeController__factory.ts +212 -0
- package/typechain-types/factories/PendleGauge__factory.ts +171 -0
- package/typechain-types/factories/PendleGovernanceManager__factory.ts +1 -1
- package/typechain-types/factories/PendleJoeLpSCY__factory.ts +726 -0
- package/typechain-types/factories/PendleJoeSwapHelperUpg__factory.ts +0 -13
- package/typechain-types/factories/PendleMarketFactory__factory.ts +90 -5
- package/typechain-types/factories/PendleMarketRewards__factory.ts +1140 -0
- package/typechain-types/factories/PendleMarket__factory.ts +182 -94
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +74 -77
- package/typechain-types/factories/PendleQiTokenHelper__factory.ts +99 -0
- package/typechain-types/factories/PendleQiTokenSCY__factory.ts +845 -0
- package/typechain-types/factories/PendleRouter__factory.ts +1 -23
- package/typechain-types/factories/PendleVotingController__factory.ts +776 -0
- package/typechain-types/factories/PendleWstEthSCY__factory.ts +686 -0
- package/typechain-types/factories/PendleYearnVaultScy__factory.ts +218 -243
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +39 -29
- package/typechain-types/factories/PendleYieldToken__factory.ts +153 -211
- package/typechain-types/factories/RewardManagerMini__factory.ts +116 -0
- package/typechain-types/factories/RewardManager__factory.ts +43 -32
- package/typechain-types/factories/RouterStatic__factory.ts +1 -1
- package/typechain-types/factories/SCYBaseWithRewards__factory.ts +242 -218
- package/typechain-types/factories/SCYBase__factory.ts +195 -176
- package/typechain-types/factories/VotingControllerStorage__factory.ts +361 -0
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +616 -0
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +415 -0
- package/typechain-types/factories/VotingEscrowToken__factory.ts +153 -0
- package/typechain-types/hardhat.d.ts +338 -131
- package/typechain-types/index.ts +92 -38
- package/build/artifacts/contracts/SuperComposableYield/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/SCYUtils.sol/SCYUtils.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/implementations/RewardManager.sol/RewardManager.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBase.sol/SCYBase.dbg.json +0 -4
- package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleBaseToken.sol/PendleBaseToken.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.json +0 -842
- package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.json +0 -265
- package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.json +0 -452
- package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +0 -783
- package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.json +0 -766
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.json +0 -641
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.json +0 -623
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.json +0 -623
- package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +0 -339
- package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.dbg.json +0 -4
- package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.json +0 -808
- package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.dbg.json +0 -4
- package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.json +0 -862
- package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.dbg.json +0 -4
- package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.json +0 -55
- package/build/artifacts/contracts/core/actions/base/ActionType.sol/ActionType.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.json +0 -55
- package/build/artifacts/contracts/interfaces/IPBaseToken.sol/IPBaseToken.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPGauge.sol/IPendleGauge.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPGauge.sol/IPendleGauge.json +0 -113
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IVePToken.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IVePToken.json +0 -43
- package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IVotingEscrowPendle.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/VotingEscrowController.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/VotingEscrowController.json +0 -61
- package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.json +0 -113
- package/build/artifacts/contracts/interfaces/IVePToken.sol/IVePToken.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.json +0 -61
- package/build/artifacts/contracts/interfaces/IVotingEscrowPendle.sol/IVotingEscrowPendle.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IVotingEscrowPendle.sol/IVotingEscrowPendle.json +0 -167
- package/build/artifacts/contracts/libraries/JoeLibrary.sol/JoeLibrary.dbg.json +0 -4
- package/build/artifacts/contracts/libraries/SCYIndex.sol/SCYIndexLib.dbg.json +0 -4
- package/build/artifacts/contracts/libraries/math/MarketMathAux.sol/MarketMathAux.dbg.json +0 -4
- package/build/artifacts/contracts/periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +0 -4
- package/contracts/SuperComposableYield/ISuperComposableYield.sol +0 -80
- package/contracts/SuperComposableYield/SCYUtils.sol +0 -14
- package/contracts/SuperComposableYield/implementations/IRewardManager.sol +0 -16
- package/contracts/SuperComposableYield/implementations/RewardManager.sol +0 -151
- package/contracts/SuperComposableYield/implementations/SCYBase.sol +0 -166
- package/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol +0 -88
- package/contracts/core/PendleBaseToken.sol +0 -35
- package/contracts/core/PendlePrincipalToken.sol +0 -54
- package/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol +0 -140
- package/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol +0 -133
- package/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol +0 -120
- package/contracts/core/PendleSCYImpl/PendleStETHSCY.sol +0 -107
- package/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol +0 -109
- package/contracts/core/PendleYieldToken.sol +0 -340
- package/contracts/core/actions/ActionRedeem.sol +0 -36
- package/contracts/core/actions/base/ActionType.sol +0 -11
- package/contracts/interfaces/IPActionRedeem.sol +0 -17
- package/contracts/interfaces/IPBaseToken.sol +0 -9
- package/contracts/interfaces/IPGauge.sol +0 -32
- package/contracts/interfaces/IPVotingEscrowController.sol +0 -14
- package/contracts/interfaces/IPendleGauge.sol +0 -32
- package/contracts/interfaces/IVePToken.sol +0 -14
- package/contracts/interfaces/IVotingEscrowController.sol +0 -14
- package/contracts/interfaces/IVotingEscrowPendle.sol +0 -32
- package/contracts/libraries/math/MarketMathAux.sol +0 -101
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.13;
|
|
3
|
+
import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
|
4
|
+
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
5
|
+
|
|
6
|
+
abstract contract TokenHelper {
|
|
7
|
+
using SafeERC20 for IERC20;
|
|
8
|
+
address internal constant NATIVE = address(0);
|
|
9
|
+
|
|
10
|
+
function _transferIn(
|
|
11
|
+
address token,
|
|
12
|
+
address from,
|
|
13
|
+
uint256 amount
|
|
14
|
+
) internal {
|
|
15
|
+
if (amount == 0 || token == NATIVE) return;
|
|
16
|
+
IERC20(token).safeTransferFrom(from, address(this), amount);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function _transferOut(
|
|
20
|
+
address token,
|
|
21
|
+
address to,
|
|
22
|
+
uint256 amount
|
|
23
|
+
) internal {
|
|
24
|
+
if (amount == 0) return;
|
|
25
|
+
if (token == NATIVE) {
|
|
26
|
+
(bool success, ) = to.call{ value: amount }("");
|
|
27
|
+
require(success, "eth send failed");
|
|
28
|
+
} else {
|
|
29
|
+
IERC20(token).safeTransfer(to, amount);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function _transferOut(
|
|
34
|
+
address[] memory tokens,
|
|
35
|
+
address to,
|
|
36
|
+
uint256[] memory amounts
|
|
37
|
+
) internal {
|
|
38
|
+
uint256 numTokens = tokens.length;
|
|
39
|
+
require(numTokens == amounts.length, "length mismatch");
|
|
40
|
+
for (uint256 i = 0; i < numTokens; ) {
|
|
41
|
+
_transferOut(tokens[i], to, amounts[i]);
|
|
42
|
+
unchecked {
|
|
43
|
+
i++;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function _transferOutMaxMulti(
|
|
49
|
+
address token,
|
|
50
|
+
uint256 totalAmount,
|
|
51
|
+
address[] memory tos,
|
|
52
|
+
uint256[] memory maxAmounts
|
|
53
|
+
) internal {
|
|
54
|
+
uint256 numTos = tos.length;
|
|
55
|
+
require(numTos == maxAmounts.length, "invalid length");
|
|
56
|
+
|
|
57
|
+
uint256 remaining = totalAmount;
|
|
58
|
+
for (uint256 i = 0; i < numTos; ) {
|
|
59
|
+
uint256 maxAmount = maxAmounts[i];
|
|
60
|
+
if (maxAmount > remaining) {
|
|
61
|
+
maxAmount = remaining;
|
|
62
|
+
}
|
|
63
|
+
_transferOut(token, tos[i], maxAmount);
|
|
64
|
+
unchecked {
|
|
65
|
+
remaining -= maxAmount;
|
|
66
|
+
i++;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function _selfBalance(address token) internal view returns (uint256) {
|
|
72
|
+
return (token == NATIVE) ? address(this).balance : IERC20(token).balanceOf(address(this));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function _selfBalances(address[] memory tokens)
|
|
76
|
+
internal
|
|
77
|
+
view
|
|
78
|
+
returns (uint256[] memory balances)
|
|
79
|
+
{
|
|
80
|
+
uint256 length = tokens.length;
|
|
81
|
+
balances = new uint256[](length);
|
|
82
|
+
for (uint256 i = 0; i < length; ) {
|
|
83
|
+
balances[i] = _selfBalance(tokens[i]);
|
|
84
|
+
unchecked {
|
|
85
|
+
i++;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/// @notice Approves the stipulated contract to spend the given allowance in the given token
|
|
91
|
+
/// @dev Errors with 'SA' if transfer fails
|
|
92
|
+
/// @param token The contract address of the token to be approved
|
|
93
|
+
/// @param to The target of the approval
|
|
94
|
+
/// @param value The amount of the given token the target will be allowed to spend
|
|
95
|
+
function _safeApprove(
|
|
96
|
+
address token,
|
|
97
|
+
address to,
|
|
98
|
+
uint256 value
|
|
99
|
+
) internal {
|
|
100
|
+
(bool success, bytes memory data) = token.call(
|
|
101
|
+
abi.encodeWithSelector(IERC20.approve.selector, to, value)
|
|
102
|
+
);
|
|
103
|
+
require(success && (data.length == 0 || abi.decode(data, (bool))), "Safe Approve");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
13
13
|
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
14
14
|
|
|
15
|
-
pragma solidity 0.8.
|
|
15
|
+
pragma solidity 0.8.13;
|
|
16
16
|
|
|
17
17
|
/* solhint-disable */
|
|
18
18
|
|
|
@@ -53,6 +53,8 @@ library LogExpMath {
|
|
|
53
53
|
int256 constant LN_36_LOWER_BOUND = ONE_18 - 1e17;
|
|
54
54
|
int256 constant LN_36_UPPER_BOUND = ONE_18 + 1e17;
|
|
55
55
|
|
|
56
|
+
uint256 constant MILD_EXPONENT_BOUND = 2**254 / uint256(ONE_20);
|
|
57
|
+
|
|
56
58
|
// 18 decimal constants
|
|
57
59
|
int256 constant x0 = 128000000000000000000; // 2ˆ7
|
|
58
60
|
int256 constant a0 = 38877084059945950922200000000000000000000000000000000000; // eˆ(x0) (no decimals)
|
|
@@ -240,6 +242,62 @@ library LogExpMath {
|
|
|
240
242
|
}
|
|
241
243
|
}
|
|
242
244
|
|
|
245
|
+
/**
|
|
246
|
+
* @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.
|
|
247
|
+
*
|
|
248
|
+
* Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`.
|
|
249
|
+
*/
|
|
250
|
+
function pow(uint256 x, uint256 y) internal pure returns (uint256) {
|
|
251
|
+
if (y == 0) {
|
|
252
|
+
// We solve the 0^0 indetermination by making it equal one.
|
|
253
|
+
return uint256(ONE_18);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
if (x == 0) {
|
|
257
|
+
return 0;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Instead of computing x^y directly, we instead rely on the properties of logarithms and exponentiation to
|
|
261
|
+
// arrive at that r`esult. In particular, exp(ln(x)) = x, and ln(x^y) = y * ln(x). This means
|
|
262
|
+
// x^y = exp(y * ln(x)).
|
|
263
|
+
|
|
264
|
+
// The ln function takes a signed value, so we need to make sure x fits in the signed 256 bit range.
|
|
265
|
+
require(x < 2**255, "x out of bounds");
|
|
266
|
+
int256 x_int256 = int256(x);
|
|
267
|
+
|
|
268
|
+
// We will compute y * ln(x) in a single step. Depending on the value of x, we can either use ln or ln_36. In
|
|
269
|
+
// both cases, we leave the division by ONE_18 (due to fixed point multiplication) to the end.
|
|
270
|
+
|
|
271
|
+
// This prevents y * ln(x) from overflowing, and at the same time guarantees y fits in the signed 256 bit range.
|
|
272
|
+
require(y < MILD_EXPONENT_BOUND, "y out of bounds");
|
|
273
|
+
int256 y_int256 = int256(y);
|
|
274
|
+
|
|
275
|
+
int256 logx_times_y;
|
|
276
|
+
if (LN_36_LOWER_BOUND < x_int256 && x_int256 < LN_36_UPPER_BOUND) {
|
|
277
|
+
int256 ln_36_x = _ln_36(x_int256);
|
|
278
|
+
|
|
279
|
+
// ln_36_x has 36 decimal places, so multiplying by y_int256 isn't as straightforward, since we can't just
|
|
280
|
+
// bring y_int256 to 36 decimal places, as it might overflow. Instead, we perform two 18 decimal
|
|
281
|
+
// multiplications and add the results: one with the first 18 decimals of ln_36_x, and one with the
|
|
282
|
+
// (downscaled) last 18 decimals.
|
|
283
|
+
logx_times_y = ((ln_36_x / ONE_18) *
|
|
284
|
+
y_int256 +
|
|
285
|
+
((ln_36_x % ONE_18) * y_int256) /
|
|
286
|
+
ONE_18);
|
|
287
|
+
} else {
|
|
288
|
+
logx_times_y = _ln(x_int256) * y_int256;
|
|
289
|
+
}
|
|
290
|
+
logx_times_y /= ONE_18;
|
|
291
|
+
|
|
292
|
+
// Finally, we compute exp(y * ln(x)) to arrive at x^y
|
|
293
|
+
require(
|
|
294
|
+
MIN_NATURAL_EXPONENT <= logx_times_y && logx_times_y <= MAX_NATURAL_EXPONENT,
|
|
295
|
+
"product out of bounds"
|
|
296
|
+
);
|
|
297
|
+
|
|
298
|
+
return uint256(exp(logx_times_y));
|
|
299
|
+
}
|
|
300
|
+
|
|
243
301
|
/**
|
|
244
302
|
* @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument.
|
|
245
303
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
-
pragma solidity 0.8.
|
|
2
|
+
pragma solidity 0.8.13;
|
|
3
3
|
|
|
4
4
|
import "./Math.sol";
|
|
5
5
|
import "./MarketMathCore.sol";
|
|
@@ -36,12 +36,17 @@ library MarketApproxLib {
|
|
|
36
36
|
using SCYIndexLib for SCYIndex;
|
|
37
37
|
using MarketMathCore for MarketState;
|
|
38
38
|
|
|
39
|
-
struct
|
|
40
|
-
uint256
|
|
41
|
-
int256
|
|
39
|
+
struct VarsSwapPtForExactScy {
|
|
40
|
+
uint256 netPtInGuess;
|
|
41
|
+
int256 assetToAccount;
|
|
42
42
|
uint256 netAssetOut;
|
|
43
|
+
uint256 minAssetOut;
|
|
44
|
+
uint256 largestGoodSlope;
|
|
45
|
+
bool isSlopeNonNeg;
|
|
43
46
|
}
|
|
44
47
|
|
|
48
|
+
/// `guessMin` & `guessMax` is to guess the `netPtIn`
|
|
49
|
+
|
|
45
50
|
function approxSwapPtForExactScy(
|
|
46
51
|
MarketState memory market,
|
|
47
52
|
SCYIndex index,
|
|
@@ -56,65 +61,59 @@ library MarketApproxLib {
|
|
|
56
61
|
uint256 /*netScyOut*/
|
|
57
62
|
)
|
|
58
63
|
{
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
/*
|
|
65
|
+
the algorithm is essentially to:
|
|
66
|
+
1. binary search netPtIn
|
|
67
|
+
2. if netScyOut is greater & approx minScyOut => answer found
|
|
68
|
+
|
|
69
|
+
Psuedo code:
|
|
70
|
+
binary search netPtIn:
|
|
71
|
+
netAssetOut = calcTrade(netPtIn)
|
|
72
|
+
if (netScyOut >= minScyOut):
|
|
73
|
+
guessMax = netPtIn;
|
|
74
|
+
if (netScyOut `greaterApprox` minScyOut) => answer found
|
|
75
|
+
else:
|
|
76
|
+
guessMin = netPtIn;
|
|
77
|
+
*/
|
|
64
78
|
|
|
65
|
-
|
|
66
|
-
/// SET UP VARIABLES
|
|
67
|
-
/// ------------------------------------------------------------
|
|
68
|
-
uint256 minAssetOut = index.scyToAsset(minScyOut);
|
|
69
|
-
uint256 largestGoodSlope;
|
|
70
|
-
bool isSlopeNonNeg;
|
|
79
|
+
require(isValidApproxParams(approx), "invalid approx approx");
|
|
71
80
|
|
|
81
|
+
VarsSwapPtForExactScy memory vars;
|
|
72
82
|
MarketPreCompute memory comp = market.getMarketPreCompute(index, blockTime);
|
|
73
83
|
|
|
74
84
|
if (approx.guessMax == type(uint256).max) {
|
|
75
85
|
approx.guessMax = calcMaxPtIn(market.totalPt, comp.totalAsset);
|
|
76
86
|
}
|
|
77
|
-
|
|
78
|
-
/// ------------------------------------------------------------
|
|
79
|
-
/// BINARY SEARCH
|
|
80
|
-
/// ------------------------------------------------------------
|
|
87
|
+
vars.minAssetOut = index.scyToAsset(minScyOut);
|
|
81
88
|
|
|
82
89
|
for (uint256 iter = 0; iter < approx.maxIteration; ) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
SlotSwapPtForExactScy memory slot;
|
|
86
|
-
slot.ptInGuess = getCurrentGuess(iter, approx);
|
|
90
|
+
vars.netPtInGuess = getCurrentGuess(iter, approx);
|
|
87
91
|
|
|
88
|
-
|
|
89
|
-
/// CHECK SLOPE
|
|
90
|
-
/// ------------------------------------------------------------
|
|
91
|
-
(isSlopeNonNeg, largestGoodSlope) = updateSlope(
|
|
92
|
-
market.totalPt,
|
|
93
|
-
slot.ptInGuess,
|
|
92
|
+
(vars.isSlopeNonNeg, vars.largestGoodSlope) = updateSlope(
|
|
94
93
|
comp,
|
|
95
|
-
|
|
94
|
+
market.totalPt,
|
|
95
|
+
vars.netPtInGuess,
|
|
96
|
+
vars.largestGoodSlope
|
|
96
97
|
);
|
|
97
|
-
if (!isSlopeNonNeg) {
|
|
98
|
-
approx.guessMax =
|
|
98
|
+
if (!vars.isSlopeNonNeg) {
|
|
99
|
+
approx.guessMax = vars.netPtInGuess;
|
|
99
100
|
continue;
|
|
100
101
|
}
|
|
101
102
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
return (slot.ptInGuess, index.assetToScy(slot.netAssetOut));
|
|
115
|
-
}
|
|
103
|
+
(vars.assetToAccount, ) = market.calcTrade(comp, vars.netPtInGuess.neg());
|
|
104
|
+
vars.netAssetOut = vars.assetToAccount.Uint();
|
|
105
|
+
|
|
106
|
+
if (vars.netAssetOut >= vars.minAssetOut) {
|
|
107
|
+
approx.guessMax = vars.netPtInGuess;
|
|
108
|
+
bool isAnswerAccepted = Math.isAGreaterApproxB(
|
|
109
|
+
vars.netAssetOut,
|
|
110
|
+
vars.minAssetOut,
|
|
111
|
+
approx.eps
|
|
112
|
+
);
|
|
113
|
+
if (isAnswerAccepted)
|
|
114
|
+
return (vars.netPtInGuess, index.assetToScy(vars.netAssetOut));
|
|
116
115
|
} else {
|
|
117
|
-
approx.guessMin =
|
|
116
|
+
approx.guessMin = vars.netPtInGuess;
|
|
118
117
|
}
|
|
119
118
|
|
|
120
119
|
unchecked {
|
|
@@ -124,7 +123,18 @@ library MarketApproxLib {
|
|
|
124
123
|
revert("approx fail");
|
|
125
124
|
}
|
|
126
125
|
|
|
127
|
-
|
|
126
|
+
struct VarsSwapExactScyForYt {
|
|
127
|
+
uint256 ptInGuess;
|
|
128
|
+
int256 assetToAccount;
|
|
129
|
+
uint256 netAssetOut;
|
|
130
|
+
uint256 amountAssetNeedMore;
|
|
131
|
+
uint256 largestGoodSlope;
|
|
132
|
+
bool isSlopeNonNeg;
|
|
133
|
+
uint256 maxAssetIn;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/// `guessMin` & `guessMax` is to guess the `netPtIn` == `netYtOut`
|
|
137
|
+
function approxSwapExactScyForYt(
|
|
128
138
|
MarketState memory market,
|
|
129
139
|
SCYIndex index,
|
|
130
140
|
uint256 maxScyIn,
|
|
@@ -134,50 +144,72 @@ library MarketApproxLib {
|
|
|
134
144
|
internal
|
|
135
145
|
pure
|
|
136
146
|
returns (
|
|
137
|
-
uint256, /*
|
|
147
|
+
uint256, /*netYtOut*/
|
|
138
148
|
uint256 /*netScyIn*/
|
|
139
149
|
)
|
|
140
150
|
{
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
151
|
+
/*
|
|
152
|
+
the algorithm is essentially to:
|
|
153
|
+
1. Binary search netPtIn (therefore netScyOut)
|
|
154
|
+
2. flashswap some netScyOut (now we owe netPtIn)
|
|
155
|
+
3. Use netScyOut + additional SCY from user => convert to PT + YT
|
|
156
|
+
4. Pay back PT & give user YT.
|
|
157
|
+
5. If the PT loan can be successfully & amount of additional SCY is smallerApprox maxScyIn
|
|
158
|
+
=> answer found
|
|
159
|
+
|
|
160
|
+
Psuedo code:
|
|
161
|
+
maxAssetIn = maxScyIn -> asset
|
|
162
|
+
binary search netPtIn:
|
|
163
|
+
netAssetOut = calcTrade(netPtIn)
|
|
164
|
+
totalAssetNeedMoreToConvertPt = netPtIn - netAssetOut
|
|
165
|
+
if (totalAssetNeedMoreToConvertPt <= maxAssetIn):
|
|
166
|
+
guessMin = netPtIn;
|
|
167
|
+
if (totalAssetNeedMoreToConvertPt `smallerApprox` maxAssetIn) => answer found
|
|
168
|
+
else:
|
|
169
|
+
guessMax = netPtOut;
|
|
170
|
+
*/
|
|
146
171
|
|
|
147
|
-
|
|
148
|
-
/// SET UP VAIRBALES
|
|
149
|
-
/// ------------------------------------------------------------
|
|
150
|
-
uint256 maxAssetIn = index.scyToAsset(maxScyIn);
|
|
172
|
+
require(isValidApproxParams(approx), "invalid approx approx");
|
|
151
173
|
|
|
174
|
+
VarsSwapExactScyForYt memory vars;
|
|
152
175
|
MarketPreCompute memory comp = market.getMarketPreCompute(index, blockTime);
|
|
153
176
|
|
|
154
177
|
if (approx.guessMax == type(uint256).max) {
|
|
155
|
-
approx.guessMax =
|
|
178
|
+
approx.guessMax = calcMaxPtIn(market.totalPt, comp.totalAsset);
|
|
156
179
|
}
|
|
157
180
|
|
|
158
|
-
|
|
159
|
-
/// BINARY SEARCH
|
|
160
|
-
/// ------------------------------------------------------------
|
|
181
|
+
vars.maxAssetIn = index.scyToAsset(maxScyIn);
|
|
161
182
|
|
|
162
183
|
for (uint256 iter = 0; iter < approx.maxIteration; ) {
|
|
163
|
-
|
|
184
|
+
// ytOutGuess = ptInGuess
|
|
185
|
+
vars.ptInGuess = getCurrentGuess(iter, approx);
|
|
164
186
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
187
|
+
(vars.isSlopeNonNeg, vars.largestGoodSlope) = updateSlope(
|
|
188
|
+
comp,
|
|
189
|
+
market.totalPt,
|
|
190
|
+
vars.ptInGuess,
|
|
191
|
+
vars.largestGoodSlope
|
|
192
|
+
);
|
|
193
|
+
if (!vars.isSlopeNonNeg) {
|
|
194
|
+
approx.guessMax = vars.ptInGuess - 1;
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
170
197
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
198
|
+
(vars.assetToAccount, ) = market.calcTrade(comp, vars.ptInGuess.neg());
|
|
199
|
+
vars.netAssetOut = vars.assetToAccount.Uint();
|
|
200
|
+
vars.amountAssetNeedMore = vars.ptInGuess - vars.netAssetOut;
|
|
201
|
+
|
|
202
|
+
if (vars.amountAssetNeedMore <= vars.maxAssetIn) {
|
|
203
|
+
approx.guessMin = vars.ptInGuess;
|
|
204
|
+
bool isAnswerAccepted = Math.isASmallerApproxB(
|
|
205
|
+
vars.amountAssetNeedMore,
|
|
206
|
+
vars.maxAssetIn,
|
|
207
|
+
approx.eps
|
|
208
|
+
);
|
|
209
|
+
if (isAnswerAccepted)
|
|
210
|
+
return (vars.ptInGuess, index.assetToScy(vars.amountAssetNeedMore));
|
|
179
211
|
} else {
|
|
180
|
-
approx.guessMax =
|
|
212
|
+
approx.guessMax = vars.ptInGuess - 1;
|
|
181
213
|
}
|
|
182
214
|
|
|
183
215
|
unchecked {
|
|
@@ -187,14 +219,7 @@ library MarketApproxLib {
|
|
|
187
219
|
revert("approx fail");
|
|
188
220
|
}
|
|
189
221
|
|
|
190
|
-
|
|
191
|
-
uint256 ptInGuess;
|
|
192
|
-
int256 _assetToAccount;
|
|
193
|
-
uint256 netAssetOut;
|
|
194
|
-
uint256 amountAssetNeedMore;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
function approxSwapExactScyForYt(
|
|
222
|
+
function approxSwapExactScyForPt(
|
|
198
223
|
MarketState memory market,
|
|
199
224
|
SCYIndex index,
|
|
200
225
|
uint256 maxScyIn,
|
|
@@ -204,72 +229,46 @@ library MarketApproxLib {
|
|
|
204
229
|
internal
|
|
205
230
|
pure
|
|
206
231
|
returns (
|
|
207
|
-
uint256, /*
|
|
232
|
+
uint256, /*netPtOut*/
|
|
208
233
|
uint256 /*netScyIn*/
|
|
209
234
|
)
|
|
210
235
|
{
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
236
|
+
/*
|
|
237
|
+
the algorithm is essentially to:
|
|
238
|
+
1. binary search netPtOut
|
|
239
|
+
2. if netScyIn smaller & approx maxScyIn => answer found
|
|
240
|
+
|
|
241
|
+
Psuedo code:
|
|
242
|
+
maxAssetIn = maxScyIn -> asset
|
|
243
|
+
binary search netPtOut:
|
|
244
|
+
netAssetIn = calcTrade(netPtOut)
|
|
245
|
+
if (netAssetIn <= maxAssetIn):
|
|
246
|
+
guessMin = netPtOut
|
|
247
|
+
if (netAssetIn `smallerApprox` maxAssetIn) => answer found
|
|
248
|
+
else:
|
|
249
|
+
guessMax = netPtOut;
|
|
250
|
+
*/
|
|
216
251
|
|
|
217
|
-
|
|
218
|
-
/// SET UP VAIRBALES
|
|
219
|
-
/// ------------------------------------------------------------
|
|
220
|
-
uint256 maxAssetIn = index.scyToAsset(maxScyIn);
|
|
221
|
-
uint256 largestGoodSlope;
|
|
222
|
-
bool isSlopeNonNeg;
|
|
252
|
+
require(isValidApproxParams(approx), "invalid approx approx");
|
|
223
253
|
|
|
224
254
|
MarketPreCompute memory comp = market.getMarketPreCompute(index, blockTime);
|
|
225
|
-
|
|
226
255
|
if (approx.guessMax == type(uint256).max) {
|
|
227
|
-
approx.guessMax =
|
|
256
|
+
approx.guessMax = calcMaxPtOut(market.totalPt, comp);
|
|
228
257
|
}
|
|
229
258
|
|
|
230
|
-
|
|
231
|
-
/// BINARY SEARCH
|
|
232
|
-
/// ------------------------------------------------------------
|
|
259
|
+
uint256 maxAssetIn = index.scyToAsset(maxScyIn);
|
|
233
260
|
|
|
234
261
|
for (uint256 iter = 0; iter < approx.maxIteration; ) {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
// ytOutGuess = ptInGuess
|
|
239
|
-
|
|
240
|
-
slot.ptInGuess = getCurrentGuess(iter, approx);
|
|
241
|
-
|
|
242
|
-
/// ------------------------------------------------------------
|
|
243
|
-
/// CHECK SLOPE
|
|
244
|
-
/// ------------------------------------------------------------
|
|
245
|
-
(isSlopeNonNeg, largestGoodSlope) = updateSlope(
|
|
246
|
-
market.totalPt,
|
|
247
|
-
slot.ptInGuess,
|
|
248
|
-
comp,
|
|
249
|
-
largestGoodSlope
|
|
250
|
-
);
|
|
251
|
-
if (!isSlopeNonNeg) {
|
|
252
|
-
approx.guessMax = slot.ptInGuess - 1;
|
|
253
|
-
continue;
|
|
254
|
-
}
|
|
262
|
+
uint256 ptOutGuess = getCurrentGuess(iter, approx);
|
|
263
|
+
(int256 assetToAccount, ) = market.calcTrade(comp, ptOutGuess.Int());
|
|
264
|
+
uint256 netAssetIn = assetToAccount.abs();
|
|
255
265
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
slot.netAssetOut = slot._assetToAccount.Uint();
|
|
261
|
-
slot.amountAssetNeedMore = slot.ptInGuess - slot.netAssetOut;
|
|
262
|
-
|
|
263
|
-
if (slot.amountAssetNeedMore <= maxAssetIn) {
|
|
264
|
-
approx.guessMin = slot.ptInGuess;
|
|
265
|
-
/// ------------------------------------------------------------
|
|
266
|
-
/// CHECK IF ANSWER FOUND
|
|
267
|
-
/// ------------------------------------------------------------
|
|
268
|
-
if (Math.isASmallerApproxB(slot.amountAssetNeedMore, maxAssetIn, approx.eps)) {
|
|
269
|
-
return (slot.ptInGuess, index.assetToScy(slot.amountAssetNeedMore));
|
|
270
|
-
}
|
|
266
|
+
if (netAssetIn <= maxAssetIn) {
|
|
267
|
+
approx.guessMin = ptOutGuess;
|
|
268
|
+
bool isAnswerAccepted = Math.isASmallerApproxB(netAssetIn, maxAssetIn, approx.eps);
|
|
269
|
+
if (isAnswerAccepted) return (ptOutGuess, index.assetToScy(netAssetIn));
|
|
271
270
|
} else {
|
|
272
|
-
approx.guessMax =
|
|
271
|
+
approx.guessMax = ptOutGuess;
|
|
273
272
|
}
|
|
274
273
|
|
|
275
274
|
unchecked {
|
|
@@ -293,38 +292,42 @@ library MarketApproxLib {
|
|
|
293
292
|
uint256 /*netScyOut*/
|
|
294
293
|
)
|
|
295
294
|
{
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
295
|
+
/*
|
|
296
|
+
the algorithm is essentially to:
|
|
297
|
+
1. Binary search netPtOut (therefore netScyIn) (netYtIn == netPtOut)
|
|
298
|
+
2. flashswap netPtOut (now we owe netScyIn)
|
|
299
|
+
3. Pair netPtOut with the corresponding amount of Yt => redeem Scy
|
|
300
|
+
4. Pay back Scy & the exceed amount of Scy (netScyOut) is transferred out to user
|
|
301
|
+
5. If netScyOut is greater approx minScyOut => answer found
|
|
302
|
+
|
|
303
|
+
Psuedo code:
|
|
304
|
+
minAssetOut = minScyOut -> asset
|
|
305
|
+
binary search netPtOut:
|
|
306
|
+
netAssetIn = calcTrade(netPtOut)
|
|
307
|
+
netAssetFromPtYt = netPtOut
|
|
308
|
+
netAssetOut = netAssetFromPtYt - netAssetIn
|
|
309
|
+
if (netAssetOut >= minAssetOut):
|
|
310
|
+
guessMax = netPtOut
|
|
311
|
+
if (netAssetOut `greaterApprox` minAssetOut) => answer found
|
|
312
|
+
else:
|
|
313
|
+
guessMin = netPtOut;
|
|
314
|
+
*/
|
|
301
315
|
|
|
302
|
-
|
|
303
|
-
/// SET UP VAIRBALES
|
|
304
|
-
/// ------------------------------------------------------------
|
|
305
|
-
uint256 minAssetOut = index.scyToAsset(minScyOut);
|
|
316
|
+
require(isValidApproxParams(approx), "invalid approx approx");
|
|
306
317
|
|
|
307
318
|
MarketPreCompute memory comp = market.getMarketPreCompute(index, blockTime);
|
|
308
|
-
|
|
309
319
|
if (approx.guessMax == type(uint256).max) {
|
|
310
320
|
approx.guessMax = calcMaxPtOut(market.totalPt, comp);
|
|
311
321
|
}
|
|
312
322
|
|
|
313
|
-
|
|
314
|
-
/// BINARY SEARCH
|
|
315
|
-
/// ------------------------------------------------------------
|
|
323
|
+
uint256 minAssetOut = index.scyToAsset(minScyOut);
|
|
316
324
|
|
|
317
325
|
for (uint256 iter = 0; iter < approx.maxIteration; ) {
|
|
318
|
-
// iter++ at end of loop
|
|
319
|
-
|
|
320
326
|
// ytInGuess = ptOutGuess
|
|
321
327
|
uint256 ptOutGuess = getCurrentGuess(iter, approx);
|
|
322
328
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
/// ------------------------------------------------------------
|
|
326
|
-
(int256 _assetToAccount, ) = market.calcTrade(comp, ptOutGuess.Int());
|
|
327
|
-
uint256 netAssetOwed = _assetToAccount.neg().Uint();
|
|
329
|
+
(int256 assetToAccount, ) = market.calcTrade(comp, ptOutGuess.Int());
|
|
330
|
+
uint256 netAssetOwed = assetToAccount.abs();
|
|
328
331
|
|
|
329
332
|
// since ptOutGuess is between guessMin & guessMax, it's guaranteed that
|
|
330
333
|
// there are enough Yt to pair with ptOut
|
|
@@ -333,9 +336,6 @@ library MarketApproxLib {
|
|
|
333
336
|
|
|
334
337
|
if (netAssetOut >= minAssetOut) {
|
|
335
338
|
approx.guessMax = ptOutGuess;
|
|
336
|
-
/// ------------------------------------------------------------
|
|
337
|
-
/// CHECK IF ANSWER FOUND
|
|
338
|
-
/// ------------------------------------------------------------
|
|
339
339
|
if (Math.isAGreaterApproxB(netAssetOut, minAssetOut, approx.eps)) {
|
|
340
340
|
return (ptOutGuess, index.assetToScy(netAssetOut));
|
|
341
341
|
}
|
|
@@ -351,9 +351,9 @@ library MarketApproxLib {
|
|
|
351
351
|
}
|
|
352
352
|
|
|
353
353
|
function updateSlope(
|
|
354
|
+
MarketPreCompute memory comp,
|
|
354
355
|
int256 totalPt,
|
|
355
356
|
uint256 ptInGuess,
|
|
356
|
-
MarketPreCompute memory comp,
|
|
357
357
|
uint256 largestGoodSlope
|
|
358
358
|
) internal pure returns (bool isSlopeNonNeg, uint256 newLargestGoodSlop) {
|
|
359
359
|
if (ptInGuess <= largestGoodSlope) {
|
|
@@ -393,7 +393,7 @@ library MarketApproxLib {
|
|
|
393
393
|
pure
|
|
394
394
|
returns (uint256)
|
|
395
395
|
{
|
|
396
|
-
int256 logitP = (Math.IONE.mulDown(comp.
|
|
396
|
+
int256 logitP = (Math.IONE.mulDown(comp.feeRate) - comp.rateAnchor)
|
|
397
397
|
.mulDown(comp.rateScalar)
|
|
398
398
|
.exp();
|
|
399
399
|
int256 proportion = logitP.divDown(logitP + Math.IONE);
|
|
@@ -417,6 +417,9 @@ library MarketApproxLib {
|
|
|
417
417
|
returns (uint256)
|
|
418
418
|
{
|
|
419
419
|
if (iteration == 0 && approx.guessOffchain != 0) return approx.guessOffchain;
|
|
420
|
-
else
|
|
420
|
+
else {
|
|
421
|
+
if (approx.guessMin > approx.guessMax) return approx.guessMax;
|
|
422
|
+
return (approx.guessMin + approx.guessMax) / 2;
|
|
423
|
+
}
|
|
421
424
|
}
|
|
422
425
|
}
|