@pendle/core-v2 0.8.0-beta-3 → 0.8.0-beta-5
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 +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +7 -2
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
- package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
- package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
- package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
- package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
- package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
- package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
- package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/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 +1 -1
- package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
- 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/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +1 -1
- package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +191 -175
- package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
- package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +2 -9
- package/contracts/core/PendleERC20Permit.sol +1 -1
- package/contracts/offchain-helpers/RouterStatic.sol +90 -25
- package/package.json +1 -1
- package/typechain-types/RouterStatic.ts +335 -317
- package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
- package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleMarket__factory.ts +1 -1
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenSCY__factory.ts +10 -1
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
- package/typechain-types/factories/RouterStatic__factory.ts +190 -174
|
@@ -20,6 +20,7 @@ contract PendleQiTokenSCY is SCYBaseWithRewards, PendleQiTokenHelper {
|
|
|
20
20
|
string memory _name,
|
|
21
21
|
string memory _symbol,
|
|
22
22
|
address _qiToken,
|
|
23
|
+
bool isUnderlyingNative,
|
|
23
24
|
address _WAVAX,
|
|
24
25
|
uint256 _initialExchangeRateMantissa
|
|
25
26
|
)
|
|
@@ -30,7 +31,7 @@ contract PendleQiTokenSCY is SCYBaseWithRewards, PendleQiTokenHelper {
|
|
|
30
31
|
|
|
31
32
|
qiToken = _qiToken;
|
|
32
33
|
|
|
33
|
-
underlying =
|
|
34
|
+
underlying = isUnderlyingNative ? NATIVE : IQiErc20(qiToken).underlying();
|
|
34
35
|
comptroller = IQiToken(qiToken).comptroller();
|
|
35
36
|
|
|
36
37
|
QI = IBenQiComptroller(comptroller).qiAddress();
|
|
@@ -41,14 +42,6 @@ contract PendleQiTokenSCY is SCYBaseWithRewards, PendleQiTokenHelper {
|
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
|
|
44
|
-
function _getUnderlyingOfQiToken() internal view returns (address) {
|
|
45
|
-
try IQiErc20(qiToken).underlying() returns (address res) {
|
|
46
|
-
return res;
|
|
47
|
-
} catch {
|
|
48
|
-
return NATIVE;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
45
|
/*///////////////////////////////////////////////////////////////
|
|
53
46
|
DEPOSIT/REDEEM USING BASE TOKENS
|
|
54
47
|
//////////////////////////////////////////////////////////////*/
|
|
@@ -28,7 +28,7 @@ contract PendleERC20Permit is PendleERC20, IERC20Permit, EIP712 {
|
|
|
28
28
|
string memory name_,
|
|
29
29
|
string memory symbol_,
|
|
30
30
|
uint8 decimals_
|
|
31
|
-
) PendleERC20(name_, symbol_,
|
|
31
|
+
) PendleERC20(name_, symbol_, decimals_) EIP712(name_, "1") {}
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* @dev See {IERC20Permit-permit}.
|
|
@@ -13,7 +13,7 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
|
|
|
13
13
|
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
|
|
14
14
|
|
|
15
15
|
/// EXCLUDED FROM ALL AUDITS, TO BE CALLED ONLY BY PENDLE's SDK
|
|
16
|
-
contract RouterStatic is IPRouterStatic
|
|
16
|
+
contract RouterStatic is IPRouterStatic {
|
|
17
17
|
using MarketMathCore for MarketState;
|
|
18
18
|
using MarketApproxLib for MarketState;
|
|
19
19
|
using Math for uint256;
|
|
@@ -21,9 +21,9 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
|
|
|
21
21
|
using LogExpMath for int256;
|
|
22
22
|
using SCYIndexLib for SCYIndex;
|
|
23
23
|
|
|
24
|
-
IPYieldContractFactory
|
|
25
|
-
IPMarketFactory
|
|
26
|
-
ApproxParams
|
|
24
|
+
IPYieldContractFactory internal immutable yieldContractFactory;
|
|
25
|
+
IPMarketFactory internal immutable marketFactory;
|
|
26
|
+
ApproxParams internal approxParams =
|
|
27
27
|
ApproxParams({
|
|
28
28
|
guessMin: 0,
|
|
29
29
|
guessMax: type(uint256).max,
|
|
@@ -32,18 +32,11 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
|
|
|
32
32
|
eps: 1e15
|
|
33
33
|
});
|
|
34
34
|
|
|
35
|
-
constructor(IPYieldContractFactory _yieldContractFactory, IPMarketFactory _marketFactory)
|
|
36
|
-
initializer
|
|
37
|
-
{
|
|
35
|
+
constructor(IPYieldContractFactory _yieldContractFactory, IPMarketFactory _marketFactory) {
|
|
38
36
|
yieldContractFactory = _yieldContractFactory;
|
|
39
37
|
marketFactory = _marketFactory;
|
|
40
38
|
}
|
|
41
39
|
|
|
42
|
-
function initialize() external initializer {
|
|
43
|
-
__UUPSUpgradeable_init();
|
|
44
|
-
__Ownable_init();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
40
|
// ============= SYSTEM INFO =============
|
|
48
41
|
|
|
49
42
|
function getPYInfo(address py)
|
|
@@ -176,7 +169,7 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
|
|
|
176
169
|
}
|
|
177
170
|
|
|
178
171
|
function swapExactPtForScyStatic(address market, uint256 exactPtIn)
|
|
179
|
-
|
|
172
|
+
public
|
|
180
173
|
view
|
|
181
174
|
returns (uint256 netScyOut, uint256 netScyFee)
|
|
182
175
|
{
|
|
@@ -202,7 +195,7 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
|
|
|
202
195
|
}
|
|
203
196
|
|
|
204
197
|
function swapExactScyForPtStatic(address market, uint256 exactScyIn)
|
|
205
|
-
|
|
198
|
+
public
|
|
206
199
|
view
|
|
207
200
|
returns (uint256 netPtOut, uint256 netScyFee)
|
|
208
201
|
{
|
|
@@ -215,6 +208,43 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
|
|
|
215
208
|
);
|
|
216
209
|
}
|
|
217
210
|
|
|
211
|
+
function swapPtForExactScyStatic(address market, uint256 exactScyOut)
|
|
212
|
+
public
|
|
213
|
+
view
|
|
214
|
+
returns (uint256 netPtIn, uint256 netScyFee)
|
|
215
|
+
{
|
|
216
|
+
MarketState memory state = IPMarket(market).readState(false);
|
|
217
|
+
|
|
218
|
+
(netPtIn, , netScyFee) = state.approxSwapPtForExactScy(
|
|
219
|
+
scyIndex(market),
|
|
220
|
+
exactScyOut,
|
|
221
|
+
block.timestamp,
|
|
222
|
+
approxParams
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function swapExactBaseTokenForPtStatic(
|
|
227
|
+
address market,
|
|
228
|
+
address baseToken,
|
|
229
|
+
uint256 amountBaseToken
|
|
230
|
+
) external view returns (uint256 netPtOut, uint256 netScyFee) {
|
|
231
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
232
|
+
|
|
233
|
+
return swapExactScyForPtStatic(market, SCY.previewDeposit(baseToken, amountBaseToken));
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
function swapExactPtForBaseTokenStatic(
|
|
237
|
+
address market,
|
|
238
|
+
uint256 exactYtIn,
|
|
239
|
+
address baseToken
|
|
240
|
+
) external view returns (uint256 netBaseTokenOut, uint256 netScyFee) {
|
|
241
|
+
uint256 netScyOut;
|
|
242
|
+
(netScyOut, netScyFee) = swapExactPtForScyStatic(market, exactYtIn);
|
|
243
|
+
|
|
244
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
245
|
+
netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
|
|
246
|
+
}
|
|
247
|
+
|
|
218
248
|
function swapScyForExactYtStatic(address market, uint256 exactYtOut)
|
|
219
249
|
external
|
|
220
250
|
view
|
|
@@ -236,7 +266,7 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
|
|
|
236
266
|
}
|
|
237
267
|
|
|
238
268
|
function swapExactScyForYtStatic(address market, uint256 exactScyIn)
|
|
239
|
-
|
|
269
|
+
public
|
|
240
270
|
view
|
|
241
271
|
returns (uint256 netYtOut, uint256 netScyFee)
|
|
242
272
|
{
|
|
@@ -252,7 +282,7 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
|
|
|
252
282
|
}
|
|
253
283
|
|
|
254
284
|
function swapExactYtForScyStatic(address market, uint256 exactYtIn)
|
|
255
|
-
|
|
285
|
+
public
|
|
256
286
|
view
|
|
257
287
|
returns (uint256 netScyOut, uint256 netScyFee)
|
|
258
288
|
{
|
|
@@ -286,10 +316,32 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
|
|
|
286
316
|
);
|
|
287
317
|
}
|
|
288
318
|
|
|
319
|
+
function swapExactYtForBaseTokenStatic(
|
|
320
|
+
address market,
|
|
321
|
+
uint256 exactYtIn,
|
|
322
|
+
address baseToken
|
|
323
|
+
) external view returns (uint256 netBaseTokenOut, uint256 netScyFee) {
|
|
324
|
+
uint256 netScyOut;
|
|
325
|
+
(netScyOut, netScyFee) = swapExactYtForScyStatic(market, exactYtIn);
|
|
326
|
+
|
|
327
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
328
|
+
netBaseTokenOut = SCY.previewRedeem(baseToken, netScyOut);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
function swapExactBaseTokenForYtStatic(
|
|
332
|
+
address market,
|
|
333
|
+
address baseToken,
|
|
334
|
+
uint256 amountBaseToken
|
|
335
|
+
) external view returns (uint256 netPtOut, uint256 netScyFee) {
|
|
336
|
+
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
337
|
+
|
|
338
|
+
return swapExactScyForYtStatic(market, SCY.previewDeposit(baseToken, amountBaseToken));
|
|
339
|
+
}
|
|
340
|
+
|
|
289
341
|
// ============= OTHER HELPERS =============
|
|
290
342
|
|
|
291
|
-
function
|
|
292
|
-
|
|
343
|
+
function mintPYFromScyStatic(address YT, uint256 amountScyToMint)
|
|
344
|
+
public
|
|
293
345
|
returns (uint256 amountPY)
|
|
294
346
|
{
|
|
295
347
|
IPYieldToken _YT = IPYieldToken(YT);
|
|
@@ -297,14 +349,32 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
|
|
|
297
349
|
return amountScyToMint.mulDown(_YT.scyIndexCurrent());
|
|
298
350
|
}
|
|
299
351
|
|
|
300
|
-
function
|
|
301
|
-
|
|
352
|
+
function redeemPYToScyStatic(address YT, uint256 amountPYToRedeem)
|
|
353
|
+
public
|
|
302
354
|
returns (uint256 amountPY)
|
|
303
355
|
{
|
|
304
356
|
IPYieldToken _YT = IPYieldToken(YT);
|
|
305
357
|
return amountPYToRedeem.divDown(_YT.scyIndexCurrent());
|
|
306
358
|
}
|
|
307
359
|
|
|
360
|
+
function mintPYFromBaseStatic(
|
|
361
|
+
address YT,
|
|
362
|
+
address baseToken,
|
|
363
|
+
uint256 amountBaseToken
|
|
364
|
+
) external returns (uint256 amountPY) {
|
|
365
|
+
ISuperComposableYield SCY = ISuperComposableYield(IPYieldToken(YT).SCY());
|
|
366
|
+
return mintPYFromScyStatic(YT, SCY.previewDeposit(baseToken, amountBaseToken));
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
function redeemPYToBaseStatic(
|
|
370
|
+
address YT,
|
|
371
|
+
uint256 amountPYToRedeem,
|
|
372
|
+
address baseToken
|
|
373
|
+
) external returns (uint256 amountBaseToken) {
|
|
374
|
+
ISuperComposableYield SCY = ISuperComposableYield(IPYieldToken(YT).SCY());
|
|
375
|
+
return SCY.previewRedeem(baseToken, redeemPYToScyStatic(YT, amountPYToRedeem));
|
|
376
|
+
}
|
|
377
|
+
|
|
308
378
|
function scyIndex(address market) public view returns (SCYIndex index) {
|
|
309
379
|
(ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
|
|
310
380
|
|
|
@@ -406,9 +476,4 @@ contract RouterStatic is IPRouterStatic, Initializable, UUPSUpgradeable, Ownable
|
|
|
406
476
|
userPYInfo.unclaimedInterest.amount > 0 ||
|
|
407
477
|
userPYInfo.unclaimedRewards.length > 0);
|
|
408
478
|
}
|
|
409
|
-
|
|
410
|
-
// ============= UPGRADES =============
|
|
411
|
-
|
|
412
|
-
// solhint-disable-next-line no-empty-blocks
|
|
413
|
-
function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}
|
|
414
479
|
}
|
package/package.json
CHANGED