@pendle/core-v2 5.2.0-beta-4 → 5.2.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/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +67 -23
- package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.json +19 -6
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithoutPermitUpg.sol/SYBaseWithoutPermitUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithoutPermitUpg.sol/{SYBaseUpg.json → SYBaseWithoutPermitUpg.json} +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/AaveV3/PendleAaveV3WithRewardsSYUpg.sol/PendleAaveV3WithRewardsSYUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/AaveV3/PendleAaveV3WithRewardsSYUpg.sol/PendleAaveV3WithRewardsSYUpg.json +1169 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/AaveV3/PendleStkGHOSY.sol/PendleStkGHOSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/AaveV3/PendleStkGHOSY.sol/PendleStkGHOSY.json +1160 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/ChainlinkRelayer/PendleChainlinkReceiver.sol/PendleChainlinkReceiver.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/ChainlinkRelayer/PendleChainlinkReceiver.sol/PendleChainlinkReceiver.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/ChainlinkRelayer/PendleChainlinkRelayer.sol/PendleChainlinkRelayer.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/ChainlinkRelayer/PendleChainlinkRelayer.sol/PendleChainlinkRelayer.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Mantle/PendleCMETHSY.sol/PendleCMETHSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Mantle/PendleCMETHSY.sol/PendleCMETHSY.json +1049 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Silo/PendleSiloWithIncentiveNonBorrowableSY.sol/PendleSiloWithIncentiveNonBorrowableSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Silo/PendleSiloWithIncentiveNonBorrowableSY.sol/PendleSiloWithIncentiveNonBorrowableSY.json +1222 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Solv/PendleSolvBTCBBNBaseSYUpg.sol/PendleSolvBTCBBNBaseSYUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Solv/PendleSolvBTCBBNBaseSYUpg.sol/PendleSolvBTCBBNBaseSYUpg.json +1072 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Solv/PendleSolvHelperBase.sol/PendleSolvHelperBase.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Solv/PendleSolvHelperBase.sol/PendleSolvHelperBase.json +115 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Zerolend/PendleZerolendEBTCSYUpg.sol/PendleZerolendEBTCSYUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Zerolend/PendleZerolendEBTCSYUpg.sol/PendleZerolendEBTCSYUpg.json +1337 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Zerolend/PendleZerolendLBTCSYUpg.sol/PendleZerolendLBTCSYUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Zerolend/PendleZerolendLBTCSYUpg.sol/PendleZerolendLBTCSYUpg.json +1226 -0
- package/build/artifacts/contracts/interfaces/AaveV3/IAaveStkGHO.sol/IAaveStkGHO.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/AaveV3/IAaveStkGHO.sol/IAaveStkGHO.json +116 -0
- package/build/artifacts/contracts/interfaces/Angle/IAngleDistributor.sol/IAngleDistributor.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Angle/IAngleDistributor.sol/IAngleDistributor.json +39 -0
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiqV3.sol/IPActionAddRemoveLiqV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.json +66 -0
- package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSimple.sol/IPActionSimple.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionStorageV4.sol/IPActionStorageV4.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPTV3.sol/IPActionSwapPTV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYTV3.sol/IPActionSwapYTV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionAddRemoveLiqV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionMiscV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionStorageEvents.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapPTV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapYTV3Events.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPAllEventsV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +66 -0
- package/build/artifacts/contracts/interfaces/Zerolend/IZerolendPool.sol/IZerolendPool.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Zerolend/IZerolendPool.sol/IZerolendPool.json +37 -0
- package/build/artifacts/contracts/interfaces/Zerolend/IZerolendZ0Token.sol/IZerolendZ0Token.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Zerolend/IZerolendZ0Token.sol/IZerolendZ0Token.json +24 -0
- package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/errors/SDKErrorsDirectory.sol/SDKErrorsDirectory.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/errors/SDKErrorsDirectory.sol/SDKErrorsDirectory.json +27 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +68 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PendleBoringOneracle.sol/PendleBoringOneracle.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{internal/PendleBoringOneracle.sol → PendleBoringOneracle.sol}/PendleBoringOneracle.json +3 -3
- package/build/artifacts/contracts/oracles/PendleBoringSolvBTCOneracle.sol/PendleBoringSolvBTCOneracle.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{internal/PendleBoringSolvBTCOneracle.sol → PendleBoringSolvBTCOneracle.sol}/PendleBoringSolvBTCOneracle.json +3 -3
- package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{PtYtLpOracle/PendleLpOracleLib.sol → PendleLpOracleLib.sol}/PendleLpOracleLib.json +3 -3
- package/build/artifacts/contracts/oracles/PendlePYLpOracle.sol/PendlePYLpOracle.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{PtYtLpOracle/PendlePYLpOracle.sol → PendlePYLpOracle.sol}/PendlePYLpOracle.json +3 -3
- package/build/artifacts/contracts/oracles/PendlePYOracleLib.sol/PendlePYOracleLib.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{PtYtLpOracle/PendlePYOracleLib.sol → PendlePYOracleLib.sol}/PendlePYOracleLib.json +3 -3
- package/build/artifacts/contracts/oracles/PendleRedStoneRateOracleAdapter.sol/PendleRedStoneRateOracleAdapter.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{internal/PendleRedStoneRateOracleAdapter.sol → PendleRedStoneRateOracleAdapter.sol}/PendleRedStoneRateOracleAdapter.json +3 -3
- package/build/artifacts/contracts/oracles/PendleSparkLinearDiscountOracle.sol/PTExpiry.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{internal/PendleSparkLinearDiscountOracle.sol → PendleSparkLinearDiscountOracle.sol}/PTExpiry.json +1 -1
- package/build/artifacts/contracts/oracles/PendleSparkLinearDiscountOracle.sol/PendleSparkLinearDiscountOracle.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{internal/PendleSparkLinearDiscountOracle.sol → PendleSparkLinearDiscountOracle.sol}/PendleSparkLinearDiscountOracle.json +3 -3
- package/build/artifacts/contracts/oracles/samples/BoringLpGlpOracle.sol/BoringLpGlpOracle.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{PtYtLpOracle/samples → samples}/BoringLpGlpOracle.sol/BoringLpGlpOracle.json +3 -3
- package/build/artifacts/contracts/oracles/samples/BoringLpSeller.sol/BoringLpSeller.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{PtYtLpOracle/samples → samples}/BoringLpSeller.sol/BoringLpSeller.json +1 -1
- package/build/artifacts/contracts/oracles/samples/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{PtYtLpOracle/samples → samples}/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.json +3 -3
- package/build/artifacts/contracts/oracles/samples/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{PtYtLpOracle/samples → samples}/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.json +3 -3
- package/build/artifacts/contracts/oracles/samples/BoringPtSeller.sol/BoringPtSeller.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{PtYtLpOracle/samples → samples}/BoringPtSeller.sol/BoringPtSeller.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.json +2 -2
- package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.json +2 -2
- package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.json +2 -2
- package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.json +2 -2
- package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.dbg.json +1 -1
- package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.json +2 -2
- package/build/artifacts/contracts/router/Reflector.sol/Reflector.dbg.json +1 -1
- package/build/artifacts/contracts/router/Reflector.sol/Reflector.json +2 -2
- package/build/artifacts/contracts/router/base/ActionBase.sol/ActionBase.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.json +2 -2
- package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.json +2 -2
- package/build/artifacts/contracts/router/math/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
- package/build/artifacts/contracts/router/math/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.json +2 -2
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.dbg.json +1 -1
- package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.json +2 -2
- package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.json +65 -0
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IKyberScalingHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IOdosRouterV2.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IOdosRouterV2.json +82 -0
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
- package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.json +67 -2
- package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +16 -10
- package/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +27 -6
- package/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +3 -2
- package/contracts/core/StandardizedYield/SYBaseWithoutPermitUpg.sol +7 -1
- package/contracts/core/StandardizedYield/implementations/AaveV3/{PendleAaveV3WithRewardsSY.sol → PendleAaveV3WithRewardsSYUpg.sol} +27 -45
- package/contracts/core/StandardizedYield/implementations/AaveV3/PendleStkGHOSY.sol +130 -0
- package/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol +1 -2
- package/contracts/core/StandardizedYield/implementations/Mantle/PendleCMETHSY.sol +82 -0
- package/contracts/core/StandardizedYield/implementations/Silo/PendleSiloWithIncentiveNonBorrowableSY.sol +154 -0
- package/contracts/core/StandardizedYield/implementations/Solv/PendleSolvBTCBBNBaseSYUpg.sol +103 -0
- package/contracts/core/StandardizedYield/implementations/Solv/PendleSolvHelperBase.sol +47 -0
- package/contracts/core/StandardizedYield/implementations/Zerolend/PendleZerolendEBTCSYUpg.sol +101 -0
- package/contracts/core/StandardizedYield/implementations/Zerolend/PendleZerolendLBTCSYUpg.sol +32 -0
- package/contracts/interfaces/AaveV3/IAaveStkGHO.sol +17 -0
- package/contracts/interfaces/Angle/IAngleDistributor.sol +12 -0
- package/contracts/interfaces/IPActionMarketCoreStatic.sol +4 -0
- package/contracts/interfaces/Zerolend/IZerolendPool.sol +31 -0
- package/contracts/interfaces/Zerolend/IZerolendZ0Token.sol +6 -0
- package/contracts/offchain-helpers/errors/SDKErrorsDirectory.sol +5 -0
- package/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol +1 -1
- package/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol +1 -1
- package/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol +10 -4
- package/contracts/oracles/{internal/PendleBoringOneracle.sol → PendleBoringOneracle.sol} +2 -2
- package/contracts/oracles/{internal/PendleBoringSolvBTCOneracle.sol → PendleBoringSolvBTCOneracle.sol} +2 -2
- package/contracts/oracles/{PtYtLpOracle/PendlePYLpOracle.sol → PendlePYLpOracle.sol} +2 -2
- package/contracts/oracles/{PtYtLpOracle/PendlePYOracleLib.sol → PendlePYOracleLib.sol} +2 -2
- package/contracts/oracles/{internal/PendleRedStoneRateOracleAdapter.sol → PendleRedStoneRateOracleAdapter.sol} +3 -3
- package/contracts/oracles/{PtYtLpOracle/samples → samples}/BoringLpGlpOracle.sol +3 -3
- package/contracts/oracles/{PtYtLpOracle/samples → samples}/BoringLpSeller.sol +1 -1
- package/contracts/oracles/{PtYtLpOracle/samples → samples}/BoringPYUsdChainlinkAssetOracle.sol +3 -3
- package/contracts/oracles/{PtYtLpOracle/samples → samples}/BoringPYUsdChainlinkSYOracle.sol +3 -3
- package/contracts/oracles/{PtYtLpOracle/samples → samples}/BoringPtSeller.sol +1 -1
- package/contracts/router/swap-aggregator/IPSwapAggregator.sol +5 -1
- package/contracts/router/swap-aggregator/PendleSwap.sol +52 -0
- package/deployments/1-core.json +1 -1
- package/deployments/1-markets/AGETH-MAINNET-JUN2025.json +14 -0
- package/deployments/1-markets/PUFETH-MAINNET-JUN2025.json +14 -0
- package/deployments/1-markets/RSETH-MAINNET-JUN2025.json +14 -0
- package/deployments/1-markets/RSWETH-MAINNET-JUN2025.json +14 -0
- package/deployments/1-markets/STKGHO-MAINNET-APR2025.json +14 -0
- package/deployments/1-markets/SUSDE-MAINNET-MAY2025.json +14 -0
- package/deployments/1-markets/UNIETH-MAINNET-JUN2025.json +14 -0
- package/deployments/1-markets/USD0++-MAINNET-JAN2025.json +14 -0
- package/deployments/1-markets/WEETH-MAINNET-JUN2025.json +14 -0
- package/deployments/1-markets/ZEROLEND-EBTC-MAINNET-MAR2025.json +14 -0
- package/deployments/10-core.json +1 -1
- package/deployments/42161-core.json +1 -1
- package/deployments/42161-markets/DOLOMITE-USDC-ARBITRUM-JUN2025.json +14 -0
- package/deployments/42161-markets/DOLOMITE-WBTC-ARBITRUM-JUN2025.json +14 -0
- package/deployments/42161-markets/RSETH-ARBITRUM-JUN2025.json +14 -0
- package/deployments/42161-markets/SPSILO-ARBITRUM-MAR2025.json +14 -0
- package/deployments/42161-markets/UNIETH-ARBITRUM-JUN2025.json +14 -0
- package/deployments/42161-markets/WEETH-ARBITRUM-JUN2025.json +14 -0
- package/deployments/5000-core.json +1 -1
- package/deployments/5000-markets/CMETH-MANTLE-FEB2025.json +14 -0
- package/deployments/56-core.json +2 -2
- package/deployments/56-markets/VENUS-BNB-BSC-JUN2025.json +14 -0
- package/deployments/8453-core.json +41 -0
- package/deployments/8453-offchain-helper.json +6 -0
- package/package.json +1 -1
- package/typechain-types/ActionMarketCoreStatic.ts +68 -0
- package/typechain-types/ActionSwapLimitV3.ts +1667 -0
- package/typechain-types/IPActionMarketCoreStatic.ts +68 -0
- package/typechain-types/IPActionSwapLimitV3.ts +1667 -0
- package/typechain-types/IPActionSwapLimitV3Events.ts +207 -0
- package/typechain-types/IPChainlinkOracleFactory.ts +6 -9
- package/typechain-types/IPRouterStatic.ts +34 -0
- package/typechain-types/IPSwapAggregator.ts +64 -3
- package/typechain-types/IZerolendPool.ts +111 -0
- package/typechain-types/IZerolendZ0Token.ts +87 -0
- package/typechain-types/PendleAaveV3WithRewardsSYUpg.ts +1498 -0
- package/typechain-types/PendleChainlinkOracle.ts +16 -16
- package/typechain-types/PendleChainlinkOracleFactory.ts +130 -64
- package/typechain-types/PendleChainlinkOracleWithQuote.ts +32 -73
- package/typechain-types/PendleSiloWithIncentiveNonBorrowableSY.ts +1543 -0
- package/typechain-types/PendleSolvBTCBBNBaseSYUpg.ts +1409 -0
- package/typechain-types/PendleSolvHelperBase.ts +220 -0
- package/typechain-types/PendleSwap.ts +64 -3
- package/typechain-types/PendleVotingControllerUpg.ts +135 -43
- package/typechain-types/PendleZerolendEBTCSYUpg.ts +1754 -0
- package/typechain-types/PendleZerolendLBTCSYUpg.ts +1598 -0
- package/typechain-types/VotingControllerStorageUpg.ts +34 -15
- package/typechain-types/factories/ActionAddRemoveLiqV3__factory.ts +1 -1
- package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +67 -1
- package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionMiscV3__factory.ts +1 -1
- package/typechain-types/factories/ActionSimple__factory.ts +1 -1
- package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionStorageV4__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapLimitV3__factory.ts +2691 -0
- package/typechain-types/factories/ActionSwapPTV3__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapYTV3__factory.ts +1 -1
- package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
- package/typechain-types/factories/BoringLpGlpOracle__factory.ts +1 -1
- package/typechain-types/factories/BoringPYUsdChainlinkAssetOracle__factory.ts +1 -1
- package/typechain-types/factories/BoringPYUsdChainlinkSYOracle__factory.ts +1 -1
- package/typechain-types/factories/IPActionMarketCoreStatic__factory.ts +66 -0
- package/typechain-types/factories/IPActionSwapLimitV3Events__factory.ts +226 -0
- package/typechain-types/factories/IPActionSwapLimitV3__factory.ts +2653 -0
- package/typechain-types/factories/IPChainlinkOracleFactory__factory.ts +1 -7
- package/typechain-types/factories/IPRouterStatic__factory.ts +66 -0
- package/typechain-types/factories/IPSwapAggregator__factory.ts +65 -0
- package/typechain-types/factories/IZerolendPool__factory.ts +49 -0
- package/typechain-types/factories/IZerolendZ0Token__factory.ts +39 -0
- package/typechain-types/factories/PendleAaveV3WithRewardsSYUpg__factory.ts +1246 -0
- package/typechain-types/factories/PendleBoringOneracle__factory.ts +1 -1
- package/typechain-types/factories/PendleBoringSolvBTCOneracle__factory.ts +1 -1
- package/typechain-types/factories/PendleChainlinkOracleFactory__factory.ts +65 -38
- package/typechain-types/factories/PendleChainlinkOracleWithQuote__factory.ts +14 -54
- package/typechain-types/factories/PendleChainlinkOracle__factory.ts +7 -7
- package/typechain-types/factories/PendleChainlinkReceiver__factory.ts +1 -1
- package/typechain-types/factories/PendleChainlinkRelayer__factory.ts +1 -1
- package/typechain-types/factories/PendleGlpSY__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendlePYLpOracle__factory.ts +1 -1
- package/typechain-types/factories/PendlePoolDeployHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleRedStoneRateOracleAdapter__factory.ts +1 -1
- package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
- package/typechain-types/factories/PendleRouterV4__factory.ts +1 -1
- package/typechain-types/factories/PendleSiloWithIncentiveNonBorrowableSY__factory.ts +1317 -0
- package/typechain-types/factories/PendleSolvBTCBBNBaseSYUpg__factory.ts +1129 -0
- package/typechain-types/factories/PendleSolvHelperBase__factory.ts +172 -0
- package/typechain-types/factories/PendleSparkLinearDiscountOracle__factory.ts +1 -1
- package/typechain-types/factories/PendleStkGHOSY__factory.ts +1 -1
- package/typechain-types/factories/PendleSwap__factory.ts +66 -1
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +66 -22
- package/typechain-types/factories/PendleZerolendEBTCSYUpg__factory.ts +1394 -0
- package/typechain-types/factories/PendleZerolendLBTCSYUpg__factory.ts +1283 -0
- package/typechain-types/factories/Reflector__factory.ts +1 -1
- package/typechain-types/factories/SDKErrorsDirectory__factory.ts +26 -1
- package/typechain-types/factories/VotingControllerStorageUpg__factory.ts +19 -6
- package/typechain-types/hardhat.d.ts +125 -80
- package/typechain-types/index.ts +30 -18
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithoutPermitUpg.sol/SYBaseUpg.dbg.json +0 -4
- package/build/artifacts/contracts/core/StandardizedYield/implementations/AaveV3/PendleAaveV3WithRewardsSY.sol/PendleAaveV3WithRewardsSY.dbg.json +0 -4
- package/build/artifacts/contracts/core/StandardizedYield/implementations/AaveV3/PendleAaveV3WithRewardsSY.sol/PendleAaveV3WithRewardsSY.json +0 -1198
- package/build/artifacts/contracts/interfaces/IPChainlinkOracle.sol/IPChainlinkOracle.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPChainlinkOracle.sol/IPChainlinkOracle.json +0 -122
- package/build/artifacts/contracts/interfaces/IPChainlinkOracleFactory.sol/IPChainlinkOracleFactory.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPChainlinkOracleFactory.sol/IPChainlinkOracleFactory.json +0 -97
- package/build/artifacts/contracts/interfaces/IPChainlinkOracleWithQuote.sol/IPChainlinkOracleWithQuote.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/IPChainlinkOracleWithQuote.sol/IPChainlinkOracleWithQuote.json +0 -262
- package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.dbg.json +0 -4
- package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.json +0 -10
- package/build/artifacts/contracts/oracles/PtYtLpOracle/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PtYtLpOracle/PendlePYLpOracle.sol/PendlePYLpOracle.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PtYtLpOracle/PendlePYOracleLib.sol/PendlePYOracleLib.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracle.sol/PendleChainlinkOracle.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracle.sol/PendleChainlinkOracle.json +0 -274
- package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleBase.sol/PendleChainlinkOracleBase.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleBase.sol/PendleChainlinkOracleBase.json +0 -253
- package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.json +0 -316
- package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.json +0 -341
- package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringLpGlpOracle.sol/BoringLpGlpOracle.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringLpSeller.sol/BoringLpSeller.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPtSeller.sol/BoringPtSeller.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/internal/PendleBoringOneracle.sol/PendleBoringOneracle.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/internal/PendleBoringSolvBTCOneracle.sol/PendleBoringSolvBTCOneracle.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/internal/PendleRedStoneRateOracleAdapter.sol/PendleRedStoneRateOracleAdapter.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/internal/PendleSparkLinearDiscountOracle.sol/PTExpiry.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/internal/PendleSparkLinearDiscountOracle.sol/PendleSparkLinearDiscountOracle.dbg.json +0 -4
- package/contracts/interfaces/IPChainlinkOracle.sol +0 -15
- package/contracts/interfaces/IPChainlinkOracleFactory.sol +0 -23
- package/contracts/interfaces/IPChainlinkOracleWithQuote.sol +0 -8
- package/contracts/offchain-helpers/MarketExchangeRateLib.sol +0 -32
- package/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracle.sol +0 -40
- package/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleBase.sol +0 -129
- package/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleFactory.sol +0 -117
- package/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleWithQuote.sol +0 -80
- /package/contracts/oracles/{PtYtLpOracle/PendleLpOracleLib.sol → PendleLpOracleLib.sol} +0 -0
- /package/contracts/oracles/{internal/PendleSparkLinearDiscountOracle.sol → PendleSparkLinearDiscountOracle.sol} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
2
|
pragma solidity ^0.8.23;
|
|
3
3
|
|
|
4
|
-
import "../../
|
|
4
|
+
import "../../SYBaseWithRewardsUpg.sol";
|
|
5
5
|
import "./libraries/AaveAdapterLib.sol";
|
|
6
6
|
import "../../../../interfaces/AaveV3/IAaveV3AToken.sol";
|
|
7
7
|
import "../../../../interfaces/AaveV3/IAaveV3Pool.sol";
|
|
@@ -11,7 +11,7 @@ import "../../../../interfaces/AaveV3/IAaveV3IncentiveController.sol";
|
|
|
11
11
|
|
|
12
12
|
// [NEW] @NOTE: As for the getRewardTokens function, it will check for different incentive controller
|
|
13
13
|
// so this implementation should only be used in L2s. L1 would require more gas optimization
|
|
14
|
-
contract
|
|
14
|
+
contract PendleAaveV3WithRewardsSYUpg is SYBaseWithRewardsUpg {
|
|
15
15
|
using PMath for uint256;
|
|
16
16
|
|
|
17
17
|
event NewIncentiveController(address incentiveController);
|
|
@@ -22,25 +22,27 @@ contract PendleAaveV3WithRewardsSY is SYBaseWithRewards {
|
|
|
22
22
|
address public immutable aToken;
|
|
23
23
|
address public immutable aavePool;
|
|
24
24
|
address public immutable underlying;
|
|
25
|
+
address public immutable incentiveController;
|
|
26
|
+
address public immutable defaultRewardToken;
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
address[] public rewardTokens;
|
|
28
|
+
uint256[100] private __gap;
|
|
28
29
|
|
|
29
30
|
constructor(
|
|
30
|
-
string memory _name,
|
|
31
|
-
string memory _symbol,
|
|
32
31
|
address _aavePool,
|
|
33
32
|
address _aToken,
|
|
34
|
-
address
|
|
35
|
-
|
|
33
|
+
address _initialIncentiveController,
|
|
34
|
+
address _defaultRewardToken
|
|
35
|
+
) SYBaseUpg(_aToken) {
|
|
36
36
|
aToken = _aToken;
|
|
37
37
|
aavePool = _aavePool;
|
|
38
38
|
underlying = IAaveV3AToken(aToken).UNDERLYING_ASSET_ADDRESS();
|
|
39
|
+
incentiveController = _initialIncentiveController;
|
|
40
|
+
defaultRewardToken = _defaultRewardToken;
|
|
41
|
+
}
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
_safeApproveInf(underlying, _aavePool);
|
|
43
|
+
function initialize(string memory _name, string memory _symbol) external initializer {
|
|
44
|
+
__SYBaseUpg_init(_name, _symbol);
|
|
45
|
+
_safeApproveInf(underlying, aavePool);
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
function _deposit(
|
|
@@ -73,14 +75,14 @@ contract PendleAaveV3WithRewardsSY is SYBaseWithRewards {
|
|
|
73
75
|
function _previewDeposit(
|
|
74
76
|
address,
|
|
75
77
|
uint256 amountTokenToDeposit
|
|
76
|
-
) internal view override returns (uint256 /*amountSharesOut*/) {
|
|
78
|
+
) internal view virtual override returns (uint256 /*amountSharesOut*/) {
|
|
77
79
|
return AaveAdapterLib.calcSharesFromAssetUp(amountTokenToDeposit, _getNormalizedIncome());
|
|
78
80
|
}
|
|
79
81
|
|
|
80
82
|
function _previewRedeem(
|
|
81
83
|
address,
|
|
82
84
|
uint256 amountSharesToRedeem
|
|
83
|
-
) internal view override returns (uint256 /*amountTokenOut*/) {
|
|
85
|
+
) internal view virtual override returns (uint256 /*amountTokenOut*/) {
|
|
84
86
|
return AaveAdapterLib.calcSharesToAssetDown(amountSharesToRedeem, _getNormalizedIncome());
|
|
85
87
|
}
|
|
86
88
|
|
|
@@ -88,23 +90,28 @@ contract PendleAaveV3WithRewardsSY is SYBaseWithRewards {
|
|
|
88
90
|
return IAaveV3Pool(aavePool).getReserveNormalizedIncome(underlying);
|
|
89
91
|
}
|
|
90
92
|
|
|
91
|
-
function getTokensIn() public view override returns (address[] memory res) {
|
|
93
|
+
function getTokensIn() public view virtual override returns (address[] memory res) {
|
|
92
94
|
return ArrayLib.create(underlying, aToken);
|
|
93
95
|
}
|
|
94
96
|
|
|
95
|
-
function getTokensOut() public view override returns (address[] memory res) {
|
|
97
|
+
function getTokensOut() public view virtual override returns (address[] memory res) {
|
|
96
98
|
return ArrayLib.create(underlying, aToken);
|
|
97
99
|
}
|
|
98
100
|
|
|
99
|
-
function isValidTokenIn(address token) public view override returns (bool) {
|
|
101
|
+
function isValidTokenIn(address token) public view virtual override returns (bool) {
|
|
100
102
|
return token == aToken || token == underlying;
|
|
101
103
|
}
|
|
102
104
|
|
|
103
|
-
function isValidTokenOut(address token) public view override returns (bool) {
|
|
105
|
+
function isValidTokenOut(address token) public view virtual override returns (bool) {
|
|
104
106
|
return token == aToken || token == underlying;
|
|
105
107
|
}
|
|
106
108
|
|
|
107
|
-
function assetInfo()
|
|
109
|
+
function assetInfo()
|
|
110
|
+
external
|
|
111
|
+
view
|
|
112
|
+
virtual
|
|
113
|
+
returns (AssetType assetType, address assetAddress, uint8 assetDecimals)
|
|
114
|
+
{
|
|
108
115
|
return (AssetType.TOKEN, underlying, IERC20Metadata(underlying).decimals());
|
|
109
116
|
}
|
|
110
117
|
|
|
@@ -112,19 +119,11 @@ contract PendleAaveV3WithRewardsSY is SYBaseWithRewards {
|
|
|
112
119
|
REWARDS-RELATED
|
|
113
120
|
//////////////////////////////////////////////////////////////*/
|
|
114
121
|
|
|
115
|
-
function updateIncentiveController(address _incentiveController) external onlyOwner {
|
|
116
|
-
_updateIncentiveController(_incentiveController);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
function updateRewardTokenList() external onlyOwner {
|
|
120
|
-
_updateRewardTokenList();
|
|
121
|
-
}
|
|
122
|
-
|
|
123
122
|
/**
|
|
124
123
|
* @dev See {IStandardizedYield-getRewardTokens}
|
|
125
124
|
*/
|
|
126
125
|
function _getRewardTokens() internal view override returns (address[] memory res) {
|
|
127
|
-
return
|
|
126
|
+
return ArrayLib.create(defaultRewardToken);
|
|
128
127
|
}
|
|
129
128
|
|
|
130
129
|
function _redeemExternalReward() internal override {
|
|
@@ -132,21 +131,4 @@ contract PendleAaveV3WithRewardsSY is SYBaseWithRewards {
|
|
|
132
131
|
IAaveV3IncentiveController(incentiveController).claimAllRewardsToSelf(ArrayLib.create(aToken));
|
|
133
132
|
}
|
|
134
133
|
}
|
|
135
|
-
|
|
136
|
-
function _updateIncentiveController(address _incentiveController) internal {
|
|
137
|
-
if (_incentiveController == incentiveController) {
|
|
138
|
-
revert SameIncentiveController();
|
|
139
|
-
}
|
|
140
|
-
_redeemExternalReward();
|
|
141
|
-
|
|
142
|
-
incentiveController = _incentiveController;
|
|
143
|
-
if (_incentiveController != address(0)) {
|
|
144
|
-
_updateRewardTokenList();
|
|
145
|
-
}
|
|
146
|
-
emit NewIncentiveController(_incentiveController);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
function _updateRewardTokenList() internal {
|
|
150
|
-
rewardTokens = ArrayLib.merge(rewardTokens, IAaveV3IncentiveController(incentiveController).getRewardsList());
|
|
151
|
-
}
|
|
152
134
|
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity ^0.8.17;
|
|
3
|
+
|
|
4
|
+
import "../../SYBaseWithRewardsUpg.sol";
|
|
5
|
+
import "../../../../interfaces/AaveV3/IAaveStkGHO.sol";
|
|
6
|
+
import "../../../../interfaces/Angle/IAngleDistributor.sol";
|
|
7
|
+
|
|
8
|
+
contract PendleStkGHOSY is SYBaseWithRewardsUpg {
|
|
9
|
+
using PMath for uint256;
|
|
10
|
+
|
|
11
|
+
event ClaimedOffchainGHO(uint256 amountClaimed);
|
|
12
|
+
|
|
13
|
+
address public constant ANGLE_DISTRIBUTOR = 0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae;
|
|
14
|
+
address public constant STKGHO = 0x1a88Df1cFe15Af22B3c4c783D4e6F7F9e0C1885d;
|
|
15
|
+
address public constant GHO = 0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f;
|
|
16
|
+
address public constant AAVE = 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9;
|
|
17
|
+
bytes32 public constant ZERO_REWARD_ERROR = 0x33d2eb294587ef7b32eb48e48695ebfec45a9c8922ec7d1c444cfad1fb208e8d;
|
|
18
|
+
|
|
19
|
+
constructor() SYBaseUpg(STKGHO) {}
|
|
20
|
+
|
|
21
|
+
function initialize() external initializer {
|
|
22
|
+
__SYBaseUpg_init("SY stk GHO", "SY-stkGHO");
|
|
23
|
+
_safeApproveInf(GHO, STKGHO);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function _deposit(address tokenIn, uint256 amountDeposited) internal virtual override returns (uint256) {
|
|
27
|
+
if (tokenIn == STKGHO) {
|
|
28
|
+
return amountDeposited;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
uint256 preBalance = _selfBalance(STKGHO);
|
|
32
|
+
IAaveStkGHO(STKGHO).stake(address(this), amountDeposited);
|
|
33
|
+
return _selfBalance(STKGHO) - preBalance;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function _redeem(
|
|
37
|
+
address receiver,
|
|
38
|
+
address /*tokenOut*/,
|
|
39
|
+
uint256 amountSharesToRedeem
|
|
40
|
+
) internal virtual override returns (uint256) {
|
|
41
|
+
_transferOut(STKGHO, receiver, amountSharesToRedeem);
|
|
42
|
+
return amountSharesToRedeem;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/*///////////////////////////////////////////////////////////////
|
|
46
|
+
EXCHANGE-RATE
|
|
47
|
+
//////////////////////////////////////////////////////////////*/
|
|
48
|
+
|
|
49
|
+
function exchangeRate() public view virtual override returns (uint256) {
|
|
50
|
+
return PMath.ONE.divDown(IAaveStkGHO(STKGHO).getExchangeRate());
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/*///////////////////////////////////////////////////////////////
|
|
54
|
+
REWARDS-RELATED
|
|
55
|
+
//////////////////////////////////////////////////////////////*/
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @dev See {IStandardizedYield-getRewardTokens}
|
|
59
|
+
*/
|
|
60
|
+
function _getRewardTokens() internal pure override returns (address[] memory) {
|
|
61
|
+
return ArrayLib.create(AAVE);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function _redeemExternalReward() internal override {
|
|
65
|
+
try IAaveStkGHO(STKGHO).claimRewards(address(this), type(uint256).max) {} catch Error(
|
|
66
|
+
string memory errorString
|
|
67
|
+
) {
|
|
68
|
+
// StkGHO claim reverts when claimable amount = 0, meaning two sy transfers in diff block/same timestamp would revert.
|
|
69
|
+
// This is expected to not happen at all on ETH mainnet but just to be sure.
|
|
70
|
+
if (keccak256(abi.encodePacked(errorString)) != ZERO_REWARD_ERROR) {
|
|
71
|
+
revert(errorString);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function claimOffchainGHORewards(
|
|
77
|
+
address[] calldata users,
|
|
78
|
+
address[] calldata tokens,
|
|
79
|
+
uint256[] calldata amounts,
|
|
80
|
+
bytes32[][] calldata proofs
|
|
81
|
+
) external onlyOwner {
|
|
82
|
+
uint256 preBalance = _selfBalance(GHO);
|
|
83
|
+
IAngleDistributor(ANGLE_DISTRIBUTOR).claim(users, tokens, amounts, proofs);
|
|
84
|
+
uint256 amountClaimed = _selfBalance(GHO) - preBalance;
|
|
85
|
+
|
|
86
|
+
if (amountClaimed > 0) {
|
|
87
|
+
_transferOut(GHO, msg.sender, amountClaimed);
|
|
88
|
+
emit ClaimedOffchainGHO(amountClaimed);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/*///////////////////////////////////////////////////////////////
|
|
93
|
+
MISC FUNCTIONS FOR METADATA
|
|
94
|
+
//////////////////////////////////////////////////////////////*/
|
|
95
|
+
|
|
96
|
+
function _previewDeposit(
|
|
97
|
+
address tokenIn,
|
|
98
|
+
uint256 amountTokenToDeposit
|
|
99
|
+
) internal view override returns (uint256 amountSharesOut) {
|
|
100
|
+
if (tokenIn == STKGHO) return amountTokenToDeposit;
|
|
101
|
+
return IAaveStkGHO(STKGHO).previewStake(amountTokenToDeposit);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function _previewRedeem(
|
|
105
|
+
address /*tokenOut*/,
|
|
106
|
+
uint256 amountSharesToRedeem
|
|
107
|
+
) internal view override returns (uint256 amountTokenOut) {
|
|
108
|
+
return amountSharesToRedeem;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function getTokensIn() public view virtual override returns (address[] memory) {
|
|
112
|
+
return ArrayLib.create(GHO, STKGHO);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function getTokensOut() public view virtual override returns (address[] memory) {
|
|
116
|
+
return ArrayLib.create(STKGHO);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function isValidTokenIn(address token) public view virtual override returns (bool) {
|
|
120
|
+
return token == GHO || token == STKGHO;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function isValidTokenOut(address token) public view virtual override returns (bool) {
|
|
124
|
+
return token == STKGHO;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function assetInfo() external view returns (AssetType assetType, address assetAddress, uint8 assetDecimals) {
|
|
128
|
+
return (AssetType.TOKEN, GHO, IERC20Metadata(GHO).decimals());
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -15,7 +15,7 @@ contract PendleGlpSY is SYBaseWithRewardsUpg, GLPPreviewHelper {
|
|
|
15
15
|
address public immutable stakedGlp;
|
|
16
16
|
address public immutable rewardRouter;
|
|
17
17
|
address public immutable glpRouter;
|
|
18
|
-
address public immutable glpManager;
|
|
18
|
+
address public immutable glpManager = 0x3963FfC9dff443c2A94f21b129D429891E32ec18;
|
|
19
19
|
address public immutable weth;
|
|
20
20
|
|
|
21
21
|
constructor(
|
|
@@ -31,7 +31,6 @@ contract PendleGlpSY is SYBaseWithRewardsUpg, GLPPreviewHelper {
|
|
|
31
31
|
stakedGlp = _stakedGlp;
|
|
32
32
|
rewardRouter = _rewardRouter;
|
|
33
33
|
glpRouter = _glpRouter;
|
|
34
|
-
glpManager = IRewardRouterV2(glpRouter).glpManager();
|
|
35
34
|
weth = IRewardRouterV2(glpRouter).weth();
|
|
36
35
|
}
|
|
37
36
|
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity ^0.8.17;
|
|
3
|
+
|
|
4
|
+
import "../../SYBase.sol";
|
|
5
|
+
import "../../../../interfaces/IPExchangeRateOracle.sol";
|
|
6
|
+
|
|
7
|
+
contract PendleCMETHSY is SYBase {
|
|
8
|
+
using PMath for int256;
|
|
9
|
+
|
|
10
|
+
address public exchangeRateOracle = 0x1E2Ad9764cfAc60876486A7c714bc71f5b55f5C2;
|
|
11
|
+
address public constant CMETH = 0xE6829d9a7eE3040e1276Fa75293Bde931859e8fA;
|
|
12
|
+
address public constant WETH = 0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111;
|
|
13
|
+
|
|
14
|
+
constructor() SYBase("SY cmETH", "SY-cmETH", CMETH) {}
|
|
15
|
+
|
|
16
|
+
function setExchangeRateOracle(address newOracle) external onlyOwner {
|
|
17
|
+
exchangeRateOracle = newOracle;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/*///////////////////////////////////////////////////////////////
|
|
21
|
+
DEPOSIT/REDEEM USING BASE TOKENS
|
|
22
|
+
//////////////////////////////////////////////////////////////*/
|
|
23
|
+
|
|
24
|
+
function _deposit(address, uint256 amountDeposited) internal pure override returns (uint256 /*amountSharesOut*/) {
|
|
25
|
+
return amountDeposited;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function _redeem(
|
|
29
|
+
address receiver,
|
|
30
|
+
address tokenOut,
|
|
31
|
+
uint256 amountSharesToRedeem
|
|
32
|
+
) internal override returns (uint256 /*amountTokenOut*/) {
|
|
33
|
+
_transferOut(tokenOut, receiver, amountSharesToRedeem);
|
|
34
|
+
return amountSharesToRedeem;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/*///////////////////////////////////////////////////////////////
|
|
38
|
+
EXCHANGE-RATE
|
|
39
|
+
//////////////////////////////////////////////////////////////*/
|
|
40
|
+
|
|
41
|
+
function exchangeRate() public view override returns (uint256) {
|
|
42
|
+
return IPExchangeRateOracle(exchangeRateOracle).getExchangeRate();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/*///////////////////////////////////////////////////////////////
|
|
46
|
+
MISC FUNCTIONS FOR METADATA
|
|
47
|
+
//////////////////////////////////////////////////////////////*/
|
|
48
|
+
|
|
49
|
+
function _previewDeposit(
|
|
50
|
+
address,
|
|
51
|
+
uint256 amountTokenToDeposit
|
|
52
|
+
) internal pure override returns (uint256 /*amountSharesOut*/) {
|
|
53
|
+
return amountTokenToDeposit;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function _previewRedeem(
|
|
57
|
+
address,
|
|
58
|
+
uint256 amountSharesToRedeem
|
|
59
|
+
) internal pure override returns (uint256 /*amountTokenOut*/) {
|
|
60
|
+
return amountSharesToRedeem;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function getTokensIn() public view override returns (address[] memory res) {
|
|
64
|
+
return ArrayLib.create(yieldToken);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function getTokensOut() public view override returns (address[] memory res) {
|
|
68
|
+
return ArrayLib.create(yieldToken);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function isValidTokenIn(address token) public view override returns (bool) {
|
|
72
|
+
return token == yieldToken;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function isValidTokenOut(address token) public view override returns (bool) {
|
|
76
|
+
return token == yieldToken;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function assetInfo() external view returns (AssetType assetType, address assetAddress, uint8 assetDecimals) {
|
|
80
|
+
return (AssetType.TOKEN, WETH, 18);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
2
|
+
pragma solidity ^0.8.17;
|
|
3
|
+
|
|
4
|
+
import "../../SYBaseWithRewards.sol";
|
|
5
|
+
import "../../../../interfaces/Silo/ISiloIncentiveController.sol";
|
|
6
|
+
import "../../../../interfaces/Silo/ISilo.sol";
|
|
7
|
+
import "../../../../interfaces/Silo/ISiloLens.sol";
|
|
8
|
+
import "../../../libraries/ArrayLib.sol";
|
|
9
|
+
import "../../../libraries/math/PMath.sol";
|
|
10
|
+
|
|
11
|
+
contract PendleSiloWithIncentiveNonBorrowableSY is SYBaseWithRewards {
|
|
12
|
+
using PMath for uint256;
|
|
13
|
+
using ArrayLib for address[];
|
|
14
|
+
|
|
15
|
+
event SetNewIncentiveController(address indexed newController);
|
|
16
|
+
|
|
17
|
+
address public immutable asset;
|
|
18
|
+
address public immutable collateralToken;
|
|
19
|
+
address public immutable silo;
|
|
20
|
+
address public immutable siloLens;
|
|
21
|
+
|
|
22
|
+
address public incentiveController;
|
|
23
|
+
address[] public additionalRewardTokens;
|
|
24
|
+
address public immutable defaultRewardToken;
|
|
25
|
+
|
|
26
|
+
constructor(
|
|
27
|
+
string memory _name,
|
|
28
|
+
string memory _symbol,
|
|
29
|
+
address _asset,
|
|
30
|
+
address _collateralToken,
|
|
31
|
+
address _silo,
|
|
32
|
+
address _siloLens,
|
|
33
|
+
address _incentiveController
|
|
34
|
+
) SYBaseWithRewards(_name, _symbol, _collateralToken) {
|
|
35
|
+
asset = _asset;
|
|
36
|
+
collateralToken = _collateralToken;
|
|
37
|
+
silo = _silo;
|
|
38
|
+
siloLens = _siloLens;
|
|
39
|
+
|
|
40
|
+
incentiveController = _incentiveController;
|
|
41
|
+
defaultRewardToken = ISiloIncentiveController(incentiveController).REWARD_TOKEN();
|
|
42
|
+
|
|
43
|
+
_safeApproveInf(asset, silo);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function _deposit(
|
|
47
|
+
address tokenIn,
|
|
48
|
+
uint256 amountDeposited
|
|
49
|
+
) internal virtual override returns (uint256 amountSharesOut) {
|
|
50
|
+
if (tokenIn == collateralToken) {
|
|
51
|
+
return amountDeposited;
|
|
52
|
+
} else {
|
|
53
|
+
(, amountSharesOut) = ISilo(silo).deposit(asset, amountDeposited, true);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function _redeem(
|
|
58
|
+
address receiver,
|
|
59
|
+
address tokenOut,
|
|
60
|
+
uint256 amountSharesToRedeem
|
|
61
|
+
) internal virtual override returns (uint256 amountTokenOut) {
|
|
62
|
+
if (tokenOut == collateralToken) {
|
|
63
|
+
_transferOut(collateralToken, receiver, amountSharesToRedeem);
|
|
64
|
+
return amountSharesToRedeem;
|
|
65
|
+
} else {
|
|
66
|
+
// Silo withdrawing interface only accepts amount of asset as input
|
|
67
|
+
// Therefore we need to ensure that assetInput.toShareRoundUp() <= amountSharesToRedeem
|
|
68
|
+
|
|
69
|
+
amountTokenOut = amountSharesToRedeem;
|
|
70
|
+
|
|
71
|
+
// amountAssetToWithdraw should = withdrawnAmount as withdrawing does not
|
|
72
|
+
// bear any fees
|
|
73
|
+
ISilo(silo).withdraw(asset, amountTokenOut, true);
|
|
74
|
+
_transferOut(tokenOut, receiver, amountTokenOut);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/*///////////////////////////////////////////////////////////////
|
|
79
|
+
EXCHANGE-RATE
|
|
80
|
+
//////////////////////////////////////////////////////////////*/
|
|
81
|
+
|
|
82
|
+
function exchangeRate() public view virtual override returns (uint256) {
|
|
83
|
+
return PMath.ONE;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/*///////////////////////////////////////////////////////////////
|
|
87
|
+
REWARDS-RELATED
|
|
88
|
+
//////////////////////////////////////////////////////////////*/
|
|
89
|
+
|
|
90
|
+
function setIncentiveController(address newController) external onlyOwner {
|
|
91
|
+
// Claim all pending rewards from old contract
|
|
92
|
+
_redeemExternalReward();
|
|
93
|
+
|
|
94
|
+
address newRewardToken = ISiloIncentiveController(newController).REWARD_TOKEN();
|
|
95
|
+
if (newRewardToken != defaultRewardToken && !additionalRewardTokens.contains(newRewardToken)) {
|
|
96
|
+
additionalRewardTokens.push(newRewardToken);
|
|
97
|
+
}
|
|
98
|
+
incentiveController = newController;
|
|
99
|
+
|
|
100
|
+
emit SetNewIncentiveController(newController);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* @dev See {IStandardizedYield-getRewardTokens}
|
|
105
|
+
*/
|
|
106
|
+
function _getRewardTokens() internal view override returns (address[] memory) {
|
|
107
|
+
return additionalRewardTokens.appendHead(defaultRewardToken);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function _redeemExternalReward() internal override {
|
|
111
|
+
ISiloIncentiveController(incentiveController).claimRewardsToSelf(
|
|
112
|
+
ArrayLib.create(collateralToken),
|
|
113
|
+
type(uint256).max
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/*///////////////////////////////////////////////////////////////
|
|
118
|
+
MISC FUNCTIONS FOR METADATA
|
|
119
|
+
//////////////////////////////////////////////////////////////*/
|
|
120
|
+
|
|
121
|
+
function _previewDeposit(
|
|
122
|
+
address tokenIn,
|
|
123
|
+
uint256 amountTokenToDeposit
|
|
124
|
+
) internal view override returns (uint256 amountSharesOut) {
|
|
125
|
+
return amountTokenToDeposit;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function _previewRedeem(
|
|
129
|
+
address tokenOut,
|
|
130
|
+
uint256 amountSharesToRedeem
|
|
131
|
+
) internal view override returns (uint256 amountTokenOut) {
|
|
132
|
+
return amountSharesToRedeem;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function getTokensIn() public view virtual override returns (address[] memory) {
|
|
136
|
+
return ArrayLib.create(asset, collateralToken);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function getTokensOut() public view virtual override returns (address[] memory) {
|
|
140
|
+
return ArrayLib.create(asset, collateralToken);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function isValidTokenIn(address token) public view virtual override returns (bool) {
|
|
144
|
+
return token == asset || token == collateralToken;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function isValidTokenOut(address token) public view virtual override returns (bool) {
|
|
148
|
+
return token == asset || token == collateralToken;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function assetInfo() external view returns (AssetType assetType, address assetAddress, uint8 assetDecimals) {
|
|
152
|
+
return (AssetType.TOKEN, asset, IERC20Metadata(asset).decimals());
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.17;
|
|
3
|
+
|
|
4
|
+
import "../../SYBaseUpg.sol";
|
|
5
|
+
import "./PendleSolvHelperBase.sol";
|
|
6
|
+
import "../../../../interfaces/IPExchangeRateOracle.sol";
|
|
7
|
+
|
|
8
|
+
contract PendleSolvBTCBBNBaseSYUpg is SYBaseUpg {
|
|
9
|
+
event SetNewExchangeRateOracle(address oracle);
|
|
10
|
+
|
|
11
|
+
address public constant CBBTC = PendleSolvHelperBase.CBBTC;
|
|
12
|
+
address public constant SOLV_BTC = PendleSolvHelperBase.SOLV_BTC_TOKEN;
|
|
13
|
+
address public constant SOLV_BTCBBN = PendleSolvHelperBase.SOLV_BTCBBN_TOKEN;
|
|
14
|
+
|
|
15
|
+
address public exchangeRateOracle;
|
|
16
|
+
|
|
17
|
+
constructor() SYBaseUpg(SOLV_BTCBBN) {}
|
|
18
|
+
|
|
19
|
+
function initialize(address _initialExchangeRateOracle) external initializer {
|
|
20
|
+
__SYBaseUpg_init("SY SolvBTC Babylon", "SY-SolvBTC.BBN");
|
|
21
|
+
_setExchangeRateOracle(_initialExchangeRateOracle);
|
|
22
|
+
_safeApproveInf(CBBTC, PendleSolvHelperBase.SOLV_BTC_ROUTER);
|
|
23
|
+
_safeApproveInf(SOLV_BTC, PendleSolvHelperBase.SOLV_BTCBBN_ROUTER);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/*///////////////////////////////////////////////////////////////
|
|
27
|
+
DEPOSIT/REDEEM USING BASE TOKENS
|
|
28
|
+
//////////////////////////////////////////////////////////////*/
|
|
29
|
+
|
|
30
|
+
function _deposit(address tokenIn, uint256 amountDeposited) internal virtual override returns (uint256) {
|
|
31
|
+
if (tokenIn == SOLV_BTCBBN) {
|
|
32
|
+
return amountDeposited;
|
|
33
|
+
}
|
|
34
|
+
return PendleSolvHelperBase._mintBTCBBN(tokenIn, amountDeposited);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function _redeem(
|
|
38
|
+
address receiver,
|
|
39
|
+
address /*tokenOut*/,
|
|
40
|
+
uint256 amountSharesToRedeem
|
|
41
|
+
) internal virtual override returns (uint256) {
|
|
42
|
+
_transferOut(SOLV_BTCBBN, receiver, amountSharesToRedeem);
|
|
43
|
+
return amountSharesToRedeem;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/*///////////////////////////////////////////////////////////////
|
|
47
|
+
EXCHANGE-RATE
|
|
48
|
+
//////////////////////////////////////////////////////////////*/
|
|
49
|
+
|
|
50
|
+
function exchangeRate() public view virtual override returns (uint256) {
|
|
51
|
+
return IPExchangeRateOracle(exchangeRateOracle).getExchangeRate();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function setExchangeRateOracle(address newOracle) external virtual onlyOwner {
|
|
55
|
+
_setExchangeRateOracle(newOracle);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function _setExchangeRateOracle(address newOracle) internal virtual {
|
|
59
|
+
exchangeRateOracle = newOracle;
|
|
60
|
+
emit SetNewExchangeRateOracle(newOracle);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/*///////////////////////////////////////////////////////////////
|
|
64
|
+
MISC FUNCTIONS FOR METADATA
|
|
65
|
+
//////////////////////////////////////////////////////////////*/
|
|
66
|
+
|
|
67
|
+
function _previewDeposit(
|
|
68
|
+
address tokenIn,
|
|
69
|
+
uint256 amountTokenToDeposit
|
|
70
|
+
) internal view virtual override returns (uint256 /*amountSharesOut*/) {
|
|
71
|
+
if (tokenIn == SOLV_BTCBBN) {
|
|
72
|
+
return amountTokenToDeposit;
|
|
73
|
+
}
|
|
74
|
+
return PendleSolvHelperBase._previewMintBTCBBN(tokenIn, amountTokenToDeposit);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function _previewRedeem(
|
|
78
|
+
address /*tokenOut*/,
|
|
79
|
+
uint256 amountSharesToRedeem
|
|
80
|
+
) internal view virtual override returns (uint256 amountTokenOut) {
|
|
81
|
+
return amountSharesToRedeem;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function getTokensIn() public view virtual override returns (address[] memory) {
|
|
85
|
+
return ArrayLib.create(CBBTC, SOLV_BTC, SOLV_BTCBBN);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function getTokensOut() public view virtual override returns (address[] memory) {
|
|
89
|
+
return ArrayLib.create(SOLV_BTCBBN);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function isValidTokenIn(address token) public view virtual override returns (bool) {
|
|
93
|
+
return token == CBBTC || token == SOLV_BTC || token == SOLV_BTCBBN;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function isValidTokenOut(address token) public view virtual override returns (bool) {
|
|
97
|
+
return token == SOLV_BTCBBN;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function assetInfo() external view returns (AssetType assetType, address assetAddress, uint8 assetDecimals) {
|
|
101
|
+
return (AssetType.TOKEN, CBBTC, IERC20Metadata(CBBTC).decimals());
|
|
102
|
+
}
|
|
103
|
+
}
|