@pendle/core-v2 4.5.2 → 4.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/core/StandardizedYield/implementations/Ethena/PendleSUSDESY.sol/PendleSUSDESY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ethena/PendleSUSDESY.sol/PendleSUSDESY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultERC20SY.sol/PendleKarakVaultERC20SY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultERC20SY.sol/PendleKarakVaultERC20SY.json +1070 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultEzETHSY.sol/PendleKarakVaultEzETHSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultEzETHSY.sol/PendleKarakVaultEzETHSY.json +1144 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultSUSDESY.sol/PendleKarakVaultSUSDESY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultSUSDESY.sol/PendleKarakVaultSUSDESY.json +1111 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultSYBaseUpg.sol/PendleKarakVaultSYBaseUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultSYBaseUpg.sol/PendleKarakVaultSYBaseUpg.json +1036 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultUSDESY.sol/PendleKarakVaultUSDESY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultUSDESY.sol/PendleKarakVaultUSDESY.json +1096 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultWEETHSY.sol/PendleKarakVaultWEETHSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultWEETHSY.sol/PendleKarakVaultWEETHSY.json +1116 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleERC4626SY.sol/PendleERC4626SY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleERC4626SY.sol/PendleERC4626SY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleERC4626UpgSY.sol/PendleERC4626SYUpg.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleERC4626UpgSY.sol/PendleERC4626SYUpg.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PirexETH/PendleApxETHSY.sol/PendleApxETHSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PirexETH/PendleApxETHSY.sol/PendleApxETHSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Puffer/PendlePufStETHSY.sol/PendlePufStETHSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Puffer/PendlePufStETHSY.sol/PendlePufStETHSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Puffer/PendlePufWETHSY.sol/PendlePufWETHSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Puffer/PendlePufWETHSY.sol/PendlePufWETHSY.json +2 -2
- package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.json +19 -0
- package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.json +1200 -34
- package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.json +1228 -62
- package/build/artifacts/contracts/interfaces/IPPYLpOracle.sol/IPPYLpOracle.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/{IPPtLpOracle.sol/IPPtLpOracle.json → IPPYLpOracle.sol/IPPYLpOracle.json} +50 -2
- package/build/artifacts/contracts/interfaces/IPReflector.sol/IPReflector.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPReflector.sol/IPReflector.json +30 -0
- package/build/artifacts/contracts/interfaces/IPTokenWithSupplyCap.sol/IPTokenWithSupplyCap.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPTokenWithSupplyCap.sol/IPTokenWithSupplyCap.json +37 -0
- package/build/artifacts/contracts/interfaces/Karak/IKarakVault.sol/IKarakVault.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Karak/IKarakVault.sol/IKarakVault.json +24 -0
- package/build/artifacts/contracts/interfaces/Karak/IKarakVaultSupervisor.sol/IKarakVaultSupervisor.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Karak/IKarakVaultSupervisor.sol/IKarakVaultSupervisor.json +76 -0
- package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.json +25 -2
- package/build/artifacts/contracts/offchain-helpers/SupplyCapReader.sol/IPossibleSupplyCapInterface.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/SupplyCapReader.sol/SupplyCapReader.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.json +2 -2
- package/build/artifacts/contracts/oracles/PendlePYLpOracle.sol/PendlePYLpOracle.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/PendlePYLpOracle.sol/PendlePYLpOracle.json +422 -0
- package/build/artifacts/contracts/oracles/PendlePYOracleLib.sol/PendlePYOracleLib.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/{PendlePtOracleLib.sol/PendlePtOracleLib.json → PendlePYOracleLib.sol/PendlePYOracleLib.json} +4 -4
- package/build/artifacts/contracts/oracles/samples/BoringLpGlpOracle.sol/BoringLpGlpOracle.dbg.json +1 -1
- package/build/artifacts/contracts/oracles/samples/BoringLpGlpOracle.sol/BoringLpGlpOracle.json +2 -2
- package/build/artifacts/contracts/oracles/samples/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/samples/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.json +183 -0
- package/build/artifacts/contracts/oracles/samples/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/samples/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.json +183 -0
- 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 +1202 -36
- 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/Reflector.sol/Reflector.dbg.json +4 -0
- package/build/artifacts/contracts/router/Reflector.sol/Reflector.json +34 -0
- package/build/artifacts/contracts/router/base/ActionBase.sol/ActionBase.dbg.json +1 -1
- package/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultERC20SY.sol +32 -0
- package/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultEzETHSY.sol +80 -0
- package/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultSUSDESY.sol +73 -0
- package/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultSYBaseUpg.sol +141 -0
- package/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultUSDESY.sol +18 -0
- package/contracts/core/StandardizedYield/implementations/Karak/PendleKarakVaultWEETHSY.sol +71 -0
- package/contracts/interfaces/IERC4626.sol +2 -0
- package/contracts/interfaces/IPActionMiscV3.sol +99 -0
- package/contracts/interfaces/{IPPtLpOracle.sol → IPPYLpOracle.sol} +5 -1
- package/contracts/interfaces/IPReflector.sol +6 -0
- package/contracts/interfaces/IPTokenWithSupplyCap.sol +9 -0
- package/contracts/interfaces/Karak/IKarakVault.sol +6 -0
- package/contracts/interfaces/Karak/IKarakVaultSupervisor.sol +8 -0
- package/contracts/offchain-helpers/PendlePoolDeployHelper.sol +5 -0
- package/contracts/oracles/PendleLpOracleLib.sol +4 -4
- package/contracts/oracles/{PendlePtLpOracle.sol → PendlePYLpOracle.sol} +51 -21
- package/contracts/oracles/{PendlePtOracleLib.sol → PendlePYOracleLib.sol} +31 -1
- package/contracts/oracles/samples/BoringLpGlpOracle.sol +2 -2
- package/contracts/oracles/samples/{BoringPtUsdChainlinkOracle.sol → BoringPYUsdChainlinkAssetOracle.sol} +36 -12
- package/contracts/oracles/samples/BoringPYUsdChainlinkSYOracle.sol +102 -0
- package/contracts/router/ActionMiscV3.sol +182 -34
- package/contracts/router/ActionSwapYTV3.sol +0 -85
- package/contracts/router/Reflector.sol +70 -0
- package/contracts/router/base/ActionBase.sol +90 -1
- package/deployments/1-core.json +11 -2
- package/deployments/1-markets/KARAK-SUSDE-MAINNET-SEP2024.json +14 -0
- package/deployments/1-markets/KARAK-USDE-MAINNET-SEP2024.json +14 -0
- package/deployments/1-markets/KARAK-WEETH-MAINNET-SEP2024.json +14 -0
- package/deployments/10-core.json +11 -2
- package/deployments/42161-core.json +11 -2
- package/deployments/42161-markets/CAMELOT-PEP-ARBITRUM-JUNE2025.json +14 -0
- package/deployments/42161-markets/RSETH-ARBITRUM-SEP2024-NEW.json +11 -0
- package/deployments/5000-core.json +11 -2
- package/deployments/56-core.json +11 -2
- package/package.json +1 -1
- package/typechain-types/ActionMiscV3.ts +628 -16
- package/typechain-types/IERC4626.ts +34 -0
- package/typechain-types/IKarakVault.ts +84 -0
- package/typechain-types/IKarakVaultSupervisor.ts +190 -0
- package/typechain-types/IPActionMiscV3.ts +628 -16
- package/typechain-types/IPAllActionV3.ts +535 -0
- package/typechain-types/IPReflector.ts +95 -0
- package/typechain-types/IPTokenWithSupplyCap.ts +110 -0
- package/typechain-types/PendleKarakVaultERC20SY.ts +1324 -0
- package/typechain-types/PendleKarakVaultEzETHSY.ts +1400 -0
- package/typechain-types/PendleKarakVaultSUSDESY.ts +1380 -0
- package/typechain-types/PendleKarakVaultSYBaseUpg.ts +1312 -0
- package/typechain-types/PendleKarakVaultUSDESY.ts +1366 -0
- package/typechain-types/PendleKarakVaultWEETHSY.ts +1370 -0
- package/typechain-types/PendlePYLpOracle.ts +10 -3
- package/typechain-types/PendlePoolDeployHelper.ts +44 -0
- package/typechain-types/Reflector.ts +95 -0
- package/typechain-types/factories/ActionAddRemoveLiqV3__factory.ts +1 -1
- package/typechain-types/factories/ActionMiscV3__factory.ts +1201 -35
- package/typechain-types/factories/ActionSwapPTV3__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapYTV3__factory.ts +1 -1
- package/typechain-types/factories/BoringLpGlpOracle__factory.ts +1 -1
- package/typechain-types/factories/IERC4626__factory.ts +19 -0
- package/typechain-types/factories/IKarakVaultSupervisor__factory.ts +95 -0
- package/typechain-types/factories/IKarakVault__factory.ts +36 -0
- package/typechain-types/factories/IPActionMiscV3__factory.ts +1200 -34
- package/typechain-types/factories/IPAllActionV3__factory.ts +1228 -62
- package/typechain-types/factories/IPReflector__factory.ts +42 -0
- package/typechain-types/factories/IPTokenWithSupplyCap__factory.ts +56 -0
- package/typechain-types/factories/PendleApxETHSY__factory.ts +1 -1
- package/typechain-types/factories/PendleERC4626SYUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleERC4626SY__factory.ts +1 -1
- package/typechain-types/factories/PendleGDaiSY__factory.ts +1 -1
- package/typechain-types/factories/PendleKarakVaultERC20SY__factory.ts +1139 -0
- package/typechain-types/factories/PendleKarakVaultEzETHSY__factory.ts +1236 -0
- package/typechain-types/factories/PendleKarakVaultSUSDESY__factory.ts +1180 -0
- package/typechain-types/factories/PendleKarakVaultSYBaseUpg__factory.ts +1055 -0
- package/typechain-types/factories/PendleKarakVaultUSDESY__factory.ts +1165 -0
- package/typechain-types/factories/PendleKarakVaultWEETHSY__factory.ts +1189 -0
- package/typechain-types/factories/PendlePYLpOracle__factory.ts +12 -24
- package/typechain-types/factories/PendlePoolDeployHelper__factory.ts +24 -1
- package/typechain-types/factories/PendlePufStETHSY__factory.ts +1 -1
- package/typechain-types/factories/PendlePufWETHSY__factory.ts +1 -1
- package/typechain-types/factories/PendleSUSDESY__factory.ts +1 -1
- package/typechain-types/factories/PendleSfrxEthSY__factory.ts +1 -1
- package/typechain-types/factories/Reflector__factory.ts +84 -0
- package/typechain-types/hardhat.d.ts +99 -0
- package/typechain-types/index.ts +22 -0
- package/build/artifacts/contracts/interfaces/IPPtLpOracle.sol/IPPtLpOracle.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PendlePtLpOracle.sol/PendlePtLpOracle.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/PendlePtLpOracle.sol/PendlePtLpOracle.json +0 -367
- package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/samples/BoringPtUsdChainlinkOracle.sol/BoringPtUsdChainlinkOracle.dbg.json +0 -4
- package/build/artifacts/contracts/oracles/samples/BoringPtUsdChainlinkOracle.sol/BoringPtUsdChainlinkOracle.json +0 -157
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity ^0.8.17;
|
|
3
|
+
|
|
4
|
+
import "../interfaces/IPAllActionV3.sol";
|
|
5
|
+
import "../interfaces/IPReflector.sol";
|
|
6
|
+
import "../core/libraries/TokenHelper.sol";
|
|
7
|
+
|
|
8
|
+
contract Reflector is TokenHelper, IPReflector {
|
|
9
|
+
using SafeERC20 for IERC20;
|
|
10
|
+
|
|
11
|
+
mapping(address => bool) internal approved;
|
|
12
|
+
address internal constant ROUTER = 0x888888888889758F76e7103c6CbF23ABbF58F946;
|
|
13
|
+
|
|
14
|
+
receive() external payable {}
|
|
15
|
+
|
|
16
|
+
function reflect(bytes calldata inputData) external returns (bytes memory result) {
|
|
17
|
+
(uint256 value, bytes memory newCalldata) = _getNewCalldata(inputData);
|
|
18
|
+
bool success;
|
|
19
|
+
|
|
20
|
+
(success, result) = ROUTER.call{value: value}(newCalldata);
|
|
21
|
+
if (!success) {
|
|
22
|
+
assembly {
|
|
23
|
+
// We use Yul's revert() to bubble up errors from the target contract.
|
|
24
|
+
revert(add(32, result), mload(result))
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function _getNewCalldata(bytes calldata inputData) internal returns (uint256 value, bytes memory newCalldata) {
|
|
30
|
+
bytes4 selector = bytes4(inputData[:4]);
|
|
31
|
+
bytes calldata data = inputData[4:];
|
|
32
|
+
|
|
33
|
+
if (selector == IPActionAddRemoveLiqV3.addLiquiditySingleToken.selector) {
|
|
34
|
+
(
|
|
35
|
+
address v1,
|
|
36
|
+
address v2,
|
|
37
|
+
uint256 v3,
|
|
38
|
+
ApproxParams memory v4,
|
|
39
|
+
TokenInput memory v5,
|
|
40
|
+
LimitOrderData memory v6
|
|
41
|
+
) = abi.decode(data, (address, address, uint256, ApproxParams, TokenInput, LimitOrderData));
|
|
42
|
+
|
|
43
|
+
value = _scaleTokenInputAndGetValue(v5);
|
|
44
|
+
newCalldata = abi.encodeWithSelector(selector, v1, v2, v3, v4, v5, v6);
|
|
45
|
+
} else if (selector == IPActionAddRemoveLiqV3.addLiquiditySingleTokenKeepYt.selector) {
|
|
46
|
+
(address v1, address v2, uint256 v3, uint256 v4, TokenInput memory v5) = abi.decode(
|
|
47
|
+
data,
|
|
48
|
+
(address, address, uint256, uint256, TokenInput)
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
value = _scaleTokenInputAndGetValue(v5);
|
|
52
|
+
newCalldata = abi.encodeWithSelector(selector, v1, v2, v3, v4, v5);
|
|
53
|
+
} else {
|
|
54
|
+
revert("UNSUPPORTED_SELECTOR");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function _scaleTokenInputAndGetValue(TokenInput memory inp) internal returns (uint256 ethValue) {
|
|
59
|
+
require(inp.swapData.swapType == SwapType.NONE, "SWAP_NOT_ALLOWED"); // the exit call should already swap
|
|
60
|
+
|
|
61
|
+
inp.netTokenIn = _selfBalance(inp.tokenIn);
|
|
62
|
+
|
|
63
|
+
if (inp.tokenIn == NATIVE) {
|
|
64
|
+
ethValue = inp.netTokenIn;
|
|
65
|
+
} else if (!approved[inp.tokenIn]) {
|
|
66
|
+
IERC20(inp.tokenIn).forceApprove(ROUTER, type(uint256).max);
|
|
67
|
+
approved[inp.tokenIn] = true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -10,8 +10,10 @@ import "../../router/base/MarketApproxLib.sol";
|
|
|
10
10
|
|
|
11
11
|
import "../../core/libraries/Errors.sol";
|
|
12
12
|
import "../swap-aggregator/IPSwapAggregator.sol";
|
|
13
|
+
import "./CallbackHelper.sol";
|
|
13
14
|
|
|
14
|
-
abstract contract ActionBase is TokenHelper, IPLimitOrderType {
|
|
15
|
+
abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
16
|
+
using MarketApproxPtInLib for MarketState;
|
|
15
17
|
using MarketApproxPtOutLib for MarketState;
|
|
16
18
|
using PMath for uint256;
|
|
17
19
|
using PYIndexLib for IPYieldToken;
|
|
@@ -236,6 +238,93 @@ abstract contract ActionBase is TokenHelper, IPLimitOrderType {
|
|
|
236
238
|
if (netPtOut < minPtOut) revert("Slippage: INSUFFICIENT_PT_OUT");
|
|
237
239
|
}
|
|
238
240
|
|
|
241
|
+
// ----------------- YT SWAP -----------------
|
|
242
|
+
|
|
243
|
+
function _entry_swapExactYtForSy(IPYieldToken YT, LimitOrderData calldata limit) internal view returns (address) {
|
|
244
|
+
return !_isEmptyLimit(limit) ? address(this) : address(YT);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
function _swapExactYtForSy(
|
|
248
|
+
address receiver,
|
|
249
|
+
address market,
|
|
250
|
+
IStandardizedYield SY,
|
|
251
|
+
IPYieldToken YT,
|
|
252
|
+
uint256 exactYtIn,
|
|
253
|
+
uint256 minSyOut,
|
|
254
|
+
LimitOrderData calldata limit
|
|
255
|
+
) internal returns (uint256 netSyOut, uint256 netSyFee) {
|
|
256
|
+
uint256 netYtLeft = exactYtIn;
|
|
257
|
+
bool doMarketOrder = true;
|
|
258
|
+
|
|
259
|
+
if (!_isEmptyLimit(limit)) {
|
|
260
|
+
(netYtLeft, netSyOut, netSyFee, doMarketOrder) = _fillLimit(receiver, YT, netYtLeft, limit);
|
|
261
|
+
if (doMarketOrder) {
|
|
262
|
+
_transferOut(address(YT), address(YT), netYtLeft);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
if (doMarketOrder) {
|
|
267
|
+
uint256 preSyBalance = SY.balanceOf(receiver);
|
|
268
|
+
|
|
269
|
+
(, uint256 netSyFeeMarket) = IPMarket(market).swapSyForExactPt(
|
|
270
|
+
address(YT),
|
|
271
|
+
netYtLeft, // exactPtOut = netYtLeft
|
|
272
|
+
_encodeSwapYtForSy(receiver, YT)
|
|
273
|
+
);
|
|
274
|
+
|
|
275
|
+
// avoid stack issue
|
|
276
|
+
netSyFee += netSyFeeMarket;
|
|
277
|
+
netSyOut += SY.balanceOf(receiver) - preSyBalance;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
if (netSyOut < minSyOut) revert("Slippage: INSUFFICIENT_SY_OUT");
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
function _entry_swapExactSyForYt(IPYieldToken YT, LimitOrderData calldata limit) internal view returns (address) {
|
|
284
|
+
return !_isEmptyLimit(limit) ? address(this) : address(YT);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
function _swapExactSyForYt(
|
|
288
|
+
address receiver,
|
|
289
|
+
address market,
|
|
290
|
+
IStandardizedYield SY,
|
|
291
|
+
IPYieldToken YT,
|
|
292
|
+
uint256 exactSyIn,
|
|
293
|
+
uint256 minYtOut,
|
|
294
|
+
ApproxParams calldata guessYtOut,
|
|
295
|
+
LimitOrderData calldata limit
|
|
296
|
+
) internal returns (uint256 netYtOut, uint256 netSyFee) {
|
|
297
|
+
uint256 netSyLeft = exactSyIn;
|
|
298
|
+
bool doMarketOrder = true;
|
|
299
|
+
|
|
300
|
+
if (!_isEmptyLimit(limit)) {
|
|
301
|
+
(netSyLeft, netYtOut, netSyFee, doMarketOrder) = _fillLimit(receiver, SY, netSyLeft, limit);
|
|
302
|
+
if (doMarketOrder) {
|
|
303
|
+
_transferOut(address(SY), address(YT), netSyLeft);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
if (doMarketOrder) {
|
|
308
|
+
(uint256 netYtOutMarket, ) = _readMarket(market).approxSwapExactSyForYt(
|
|
309
|
+
YT.newIndex(),
|
|
310
|
+
netSyLeft,
|
|
311
|
+
block.timestamp,
|
|
312
|
+
guessYtOut
|
|
313
|
+
);
|
|
314
|
+
|
|
315
|
+
(, uint256 netSyFeeMarket) = IPMarket(market).swapExactPtForSy(
|
|
316
|
+
address(YT),
|
|
317
|
+
netYtOutMarket, // exactPtIn = netYtOut
|
|
318
|
+
_encodeSwapExactSyForYt(receiver, YT)
|
|
319
|
+
);
|
|
320
|
+
|
|
321
|
+
netYtOut += netYtOutMarket;
|
|
322
|
+
netSyFee += netSyFeeMarket;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
if (netYtOut < minYtOut) revert("Slippage: INSUFFICIENT_YT_OUT");
|
|
326
|
+
}
|
|
327
|
+
|
|
239
328
|
// ----------------- LIMIT ORDERS -----------------
|
|
240
329
|
function _fillLimit(
|
|
241
330
|
address receiver,
|
package/deployments/1-core.json
CHANGED
|
@@ -21,10 +21,18 @@
|
|
|
21
21
|
"yieldContractFactory": "0x70ee0A6DB4F5a2Dc4d9c0b57bE97B9987e75BAFD",
|
|
22
22
|
"marketFactory": "0x27b1dAcd74688aF24a64BD3C9C1B143118740784",
|
|
23
23
|
"router": "0x888888888889758F76e7103c6CbF23ABbF58F946",
|
|
24
|
+
"routerFacets": {
|
|
25
|
+
"ActionAddRemoveLiqV3": "0xb7631b93189900745Db51d960Ba64b8E6C658843",
|
|
26
|
+
"ActionSwapPTV3": "0xbFA3aAD535e1b996396698f89FFeC7ada0df17E8",
|
|
27
|
+
"ActionSwapYTV3": "0x8903dBFFcA66b3Fbc027aC81912ea64Fa61A5219",
|
|
28
|
+
"ActionMiscV3": "0x9afd337e41f59e5c2e6f2be05f32e958a4dbcd9a",
|
|
29
|
+
"ActionCallbackV3": "0x997FBC511a8Ad11F84a400feACD66E2A3fa805d2",
|
|
30
|
+
"ActionStorageV4": "0x6a0Ed0A9193FCBe7ae9B0F3D90F88e365Cca64fC"
|
|
31
|
+
},
|
|
24
32
|
"routerStatic": "0x263833d47eA3fA4a30f269323aba6a107f9eB14C",
|
|
25
33
|
"pendleSwap": "0x1e8b6Ac39f8A33f46a6Eb2D1aCD1047B99180AD1",
|
|
26
34
|
"routerHelper": "0x462206b11d185ef6F64B41D344325401C37EC335",
|
|
27
|
-
"
|
|
35
|
+
"pyYtLpOracle": "0x9a9fa8338dd5e5b2188006f1cd2ef26d921650c2",
|
|
28
36
|
"yieldContractFactoryV3": "0xdF3601014686674e53d1Fa52F7602525483F9122",
|
|
29
37
|
"marketFactoryV3": "0x1A6fCc85557BC4fB7B534ed835a03EF056552D52",
|
|
30
38
|
"poolDeployHelper": "0x1E4c3DE54DecbD51F1F9a6b4eaFd265FAc04e831",
|
|
@@ -35,5 +43,6 @@
|
|
|
35
43
|
"votingController": "0x44087E105137a5095c008AaB6a6530182821F2F0",
|
|
36
44
|
"gaugeController": "0x47D74516B33eD5D70ddE7119A40839f6Fcc24e57",
|
|
37
45
|
"feeDistributor": "0xd7b34a6fDCb2A7ceD2115FF7f5fdD72aa6aA4dE2",
|
|
38
|
-
"feeDistributorV2": "0x8C237520a8E14D658170A633D96F8e80764433b9"
|
|
46
|
+
"feeDistributorV2": "0x8C237520a8E14D658170A633D96F8e80764433b9",
|
|
47
|
+
"reflector": "0x5a04b737D770Ed478cb9b65D1864c24d2E9Ca227"
|
|
39
48
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY Karak sUSDe",
|
|
3
|
+
"SY": "0x1b641894e66aec7bf5ab86517e8d81763cc8e19e",
|
|
4
|
+
"YT": "0xdd68f5D26Bf1182d6b241108bfC01f95C030502b",
|
|
5
|
+
"PT": "0xd351de53277c4218CC29f793263FB60E2fcFC1dC",
|
|
6
|
+
"market": "0xB1f587B354a4a363f5332e88effbbC2E4961250A",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "3480095243000000000",
|
|
9
|
+
"initAnchor": "1243231806000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000",
|
|
11
|
+
"deployTxHash": "0xb133757035e5f335a6070099cca7dfc7f34b3d2078cb3929db627a5e5228f50b",
|
|
12
|
+
"deployBlockNumber": 19967918,
|
|
13
|
+
"reversedFee": 0.2999999999199199
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY Karak USDe",
|
|
3
|
+
"SY": "0xfe2d379117895fa6144b209c13894a17ab18c86c",
|
|
4
|
+
"YT": "0x2e40D7Cfee1e7D31d1F4875e6F33B2c9a17038fF",
|
|
5
|
+
"PT": "0x791c1E9D38029092E8aD1E252d0Bb97261809A2c",
|
|
6
|
+
"market": "0x1BCBDB8c8652345A5ACF04e6E74f70086c68FEfC",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "3070185566000000000",
|
|
9
|
+
"initAnchor": "1247051504000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000",
|
|
11
|
+
"deployTxHash": "0xa74e87ad2f48154eb1192498122c80d99c11c2938cc2fd8bf3d6330132e9f520",
|
|
12
|
+
"deployBlockNumber": 19967899,
|
|
13
|
+
"reversedFee": 0.2999999999199199
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY Karak eETH",
|
|
3
|
+
"SY": "0x8db42af6b2de9e8aee47f3423570d8e9c3873796",
|
|
4
|
+
"YT": "0x5439c3Ef0072e4A19C44478CDF947F5d957e66C7",
|
|
5
|
+
"PT": "0x5E9e4bFd81c8c03F8289b827C9B92332789b6fe1",
|
|
6
|
+
"market": "0x18bAFcaBf2d5898956AE6AC31543d9657a604165",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "3612434850000000000",
|
|
9
|
+
"initAnchor": "1216826907000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000",
|
|
11
|
+
"deployTxHash": "0x26bba852c4385f67503265fb85d16df41325aeec85668cea7a8b062d7d1fbe7a",
|
|
12
|
+
"deployBlockNumber": 19967933,
|
|
13
|
+
"reversedFee": 0.2999999999199199
|
|
14
|
+
}
|
package/deployments/10-core.json
CHANGED
|
@@ -20,10 +20,18 @@
|
|
|
20
20
|
"yieldContractFactory": "0xf5a7De2D276dbda3EEf1b62A9E718EFf4d29dDC8",
|
|
21
21
|
"marketFactory": "0x17F100fB4bE2707675c6439468d38249DD993d58",
|
|
22
22
|
"router": "0x888888888889758F76e7103c6CbF23ABbF58F946",
|
|
23
|
+
"routerFacets": {
|
|
24
|
+
"ActionAddRemoveLiqV3": "0xb7631b93189900745Db51d960Ba64b8E6C658843",
|
|
25
|
+
"ActionSwapPTV3": "0xbFA3aAD535e1b996396698f89FFeC7ada0df17E8",
|
|
26
|
+
"ActionSwapYTV3": "0x8903dBFFcA66b3Fbc027aC81912ea64Fa61A5219",
|
|
27
|
+
"ActionMiscV3": "0x9afd337e41f59e5c2e6f2be05f32e958a4dbcd9a",
|
|
28
|
+
"ActionCallbackV3": "0x997FBC511a8Ad11F84a400feACD66E2A3fa805d2",
|
|
29
|
+
"ActionStorageV4": "0x6a0Ed0A9193FCBe7ae9B0F3D90F88e365Cca64fC"
|
|
30
|
+
},
|
|
23
31
|
"routerStatic": "0x704478Dd72FD7F9B83d1F1e0fc18C14B54F034d0",
|
|
24
32
|
"pendleSwap": "0x9B9f96786B1051F5c72c517e7DEB189CF66E704F",
|
|
25
33
|
"routerHelper": "0x462206b11d185ef6F64B41D344325401C37EC335",
|
|
26
|
-
"
|
|
34
|
+
"pyYtLpOracle": "0x9a9fa8338dd5e5b2188006f1cd2ef26d921650c2",
|
|
27
35
|
"yieldContractFactoryV3": "0xfa6B22FC4c3Ad88B68c16b3061a16b1714F6Bd57",
|
|
28
36
|
"marketFactoryV3": "0x4A2B38b9cBd83c86F261a4d64c243795D4d44aBC",
|
|
29
37
|
"poolDeployHelper": "0xc4A9d8b486f388CC0E4168d2904277e8C8372FA3",
|
|
@@ -31,5 +39,6 @@
|
|
|
31
39
|
"proxyAdmin": "0xA28c08f165116587D4F3E708743B4dEe155c5E64",
|
|
32
40
|
"receiverEndpoint": "0xED18de5442297a4Ec1ce59C7c7d9427Adc2A012b",
|
|
33
41
|
"vePendle": "0xd5C47D2383Fddc19596489280C0A33AC42b2bB18",
|
|
34
|
-
"gaugeController": "0x6875e4A945E498FE1B90BbB13CFbAF0b68658C9C"
|
|
42
|
+
"gaugeController": "0x6875e4A945E498FE1B90BbB13CFbAF0b68658C9C",
|
|
43
|
+
"reflector": "0x5a04b737D770Ed478cb9b65D1864c24d2E9Ca227"
|
|
35
44
|
}
|
|
@@ -20,10 +20,18 @@
|
|
|
20
20
|
"yieldContractFactory": "0x28dE02Ac3c3F5ef427e55c321F73fDc7F192e8E4",
|
|
21
21
|
"marketFactory": "0xf5a7De2D276dbda3EEf1b62A9E718EFf4d29dDC8",
|
|
22
22
|
"router": "0x888888888889758F76e7103c6CbF23ABbF58F946",
|
|
23
|
+
"routerFacets": {
|
|
24
|
+
"ActionAddRemoveLiqV3": "0xb7631b93189900745Db51d960Ba64b8E6C658843",
|
|
25
|
+
"ActionSwapPTV3": "0xbFA3aAD535e1b996396698f89FFeC7ada0df17E8",
|
|
26
|
+
"ActionSwapYTV3": "0x8903dBFFcA66b3Fbc027aC81912ea64Fa61A5219",
|
|
27
|
+
"ActionMiscV3": "0x9afd337e41f59e5c2e6f2be05f32e958a4dbcd9a",
|
|
28
|
+
"ActionCallbackV3": "0x997FBC511a8Ad11F84a400feACD66E2A3fa805d2",
|
|
29
|
+
"ActionStorageV4": "0x6a0Ed0A9193FCBe7ae9B0F3D90F88e365Cca64fC"
|
|
30
|
+
},
|
|
23
31
|
"routerStatic": "0xAdB09F65bd90d19e3148D9ccb693F3161C6DB3E8",
|
|
24
32
|
"pendleSwap": "0x63a45E0B2686F7be77Bb85735c35704D1046459a",
|
|
25
33
|
"routerHelper": "0x462206b11d185ef6F64B41D344325401C37EC335",
|
|
26
|
-
"
|
|
34
|
+
"pyYtLpOracle": "0x9a9fa8338dd5e5b2188006f1cd2ef26d921650c2",
|
|
27
35
|
"yieldContractFactoryV3": "0xEb38531db128EcA928aea1B1CE9E5609B15ba146",
|
|
28
36
|
"marketFactoryV3": "0x2FCb47B58350cD377f94d3821e7373Df60bD9Ced",
|
|
29
37
|
"poolDeployHelper": "0x644f83C584E9B109518726d5bEa3FF615548f88b",
|
|
@@ -33,5 +41,6 @@
|
|
|
33
41
|
"vePendle": "0x3209E9412cca80B18338f2a56ADA59c484c39644",
|
|
34
42
|
"gaugeController": "0x1e56299ebc8a1010cec26005d12e3e5c5cc2db00",
|
|
35
43
|
"arbMerkleDistribution": "0x23a102e78D1FF1645a3666691495174764a5FCAF",
|
|
36
|
-
"linearDistributor": "0x83d85AEDD308261d847C3eb8d7146457bD8F38E8"
|
|
44
|
+
"linearDistributor": "0x83d85AEDD308261d847C3eb8d7146457bD8F38E8",
|
|
45
|
+
"reflector": "0x5a04b737D770Ed478cb9b65D1864c24d2E9Ca227"
|
|
37
46
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY Camelot",
|
|
3
|
+
"SY": "0xc79d8a2aa6d769138e599d4dbc30569c9870a6ee",
|
|
4
|
+
"YT": "0x6382276be546b4816a72a9ef08c52575e569dda0",
|
|
5
|
+
"PT": "0xcef75d0914d183c8eadfafaea9dfef688aaffcf3",
|
|
6
|
+
"market": "0xe9e114d1b119bbdeb7a35e1ce3c82db01622ada2",
|
|
7
|
+
"expiry": 1750896000,
|
|
8
|
+
"scalarRoot": "13559889929000000000",
|
|
9
|
+
"initAnchor": "1206279539000000000",
|
|
10
|
+
"lnFeeRateRoot": "999500333000000",
|
|
11
|
+
"deployTxHash": "0x3da72680ebb07a420f9e62854769dff7391abd72448916014bc95ef120a65b51",
|
|
12
|
+
"deployBlockNumber": 217875356,
|
|
13
|
+
"reversedFee": 0.09999999999164011
|
|
14
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY rsETH",
|
|
3
|
+
"SY": "0xf176fB51F4eB826136a54FDc71C50fCd2202E272",
|
|
4
|
+
"YT": "0x2FDc424946AA72D42E2F897447d7c335E64845F0",
|
|
5
|
+
"PT": "0x30c98c0139B62290E26aC2a2158AC341Dcaf1333",
|
|
6
|
+
"market": "0xED99fC8bdB8E9e7B8240f62f69609a125A0Fbf14",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "7770558179000000000",
|
|
9
|
+
"initAnchor": "1110275954000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000"
|
|
11
|
+
}
|
|
@@ -17,9 +17,17 @@
|
|
|
17
17
|
"baseCodeSplitter": "0x3d622b0ac50552d6283C7efE6EAdfc98aD0f6cB7",
|
|
18
18
|
"PENDLE": "0xd27B18915e7acc8FD6Ac75DB6766a80f8D2f5729",
|
|
19
19
|
"router": "0x888888888889758F76e7103c6CbF23ABbF58F946",
|
|
20
|
+
"routerFacets": {
|
|
21
|
+
"ActionAddRemoveLiqV3": "0xb7631b93189900745Db51d960Ba64b8E6C658843",
|
|
22
|
+
"ActionSwapPTV3": "0xbFA3aAD535e1b996396698f89FFeC7ada0df17E8",
|
|
23
|
+
"ActionSwapYTV3": "0x8903dBFFcA66b3Fbc027aC81912ea64Fa61A5219",
|
|
24
|
+
"ActionMiscV3": "0x9afd337e41f59e5c2e6f2be05f32e958a4dbcd9a",
|
|
25
|
+
"ActionCallbackV3": "0x997FBC511a8Ad11F84a400feACD66E2A3fa805d2",
|
|
26
|
+
"ActionStorageV4": "0x6a0Ed0A9193FCBe7ae9B0F3D90F88e365Cca64fC"
|
|
27
|
+
},
|
|
20
28
|
"routerStatic": "0xCAd502Bb55d1A3F79952F969BFF3f011CF30a94a",
|
|
21
29
|
"pendleSwap": "0x30d1dBD3CC0bD3217fA048596a7cd6932D205438",
|
|
22
|
-
"
|
|
30
|
+
"pyYtLpOracle": "0x9a9fa8338dd5e5b2188006f1cd2ef26d921650c2",
|
|
23
31
|
"yieldContractFactoryV3": "0x964840644B88C583500F473E4B829Ab629aF96A8",
|
|
24
32
|
"marketFactoryV3": "0xD228EC1f7D4313fe321fab511A872475D07F5bA6",
|
|
25
33
|
"poolDeployHelper": "0x01D0A833C3aD951e37E6f9bf5ecE86e519fF8a0c",
|
|
@@ -27,5 +35,6 @@
|
|
|
27
35
|
"proxyAdmin": "0xA28c08f165116587D4F3E708743B4dEe155c5E64",
|
|
28
36
|
"receiverEndpoint": "0xf799E4c029d14f41Dc1918C9A4C67242F565710e",
|
|
29
37
|
"vePendle": "0x30c6d4e892871220B5Ab66c10db577da96Fb974b",
|
|
30
|
-
"gaugeController": "0x428f2f93afAc3F96B0DE59854038c585e06165C8"
|
|
38
|
+
"gaugeController": "0x428f2f93afAc3F96B0DE59854038c585e06165C8",
|
|
39
|
+
"reflector": "0x5a04b737D770Ed478cb9b65D1864c24d2E9Ca227"
|
|
31
40
|
}
|
package/deployments/56-core.json
CHANGED
|
@@ -20,10 +20,18 @@
|
|
|
20
20
|
"yieldContractFactory": "0xa2530b4cfBF271e2B409A05C2CE520e4cB5fCc88",
|
|
21
21
|
"marketFactory": "0x2bEa6BfD8fbFF45aA2a893EB3B6d85D10EFcC70E",
|
|
22
22
|
"router": "0x888888888889758F76e7103c6CbF23ABbF58F946",
|
|
23
|
+
"routerFacets": {
|
|
24
|
+
"ActionAddRemoveLiqV3": "0xb7631b93189900745Db51d960Ba64b8E6C658843",
|
|
25
|
+
"ActionSwapPTV3": "0xbFA3aAD535e1b996396698f89FFeC7ada0df17E8",
|
|
26
|
+
"ActionSwapYTV3": "0x8903dBFFcA66b3Fbc027aC81912ea64Fa61A5219",
|
|
27
|
+
"ActionMiscV3": "0x9afd337e41f59e5c2e6f2be05f32e958a4dbcd9a",
|
|
28
|
+
"ActionCallbackV3": "0x997FBC511a8Ad11F84a400feACD66E2A3fa805d2",
|
|
29
|
+
"ActionStorageV4": "0x6a0Ed0A9193FCBe7ae9B0F3D90F88e365Cca64fC"
|
|
30
|
+
},
|
|
23
31
|
"routerStatic": "0x2700ADB035F82a11899ce1D3f1BF8451c296eABb",
|
|
24
32
|
"pendleSwap": "0x439B4d66255eFf74e621FBacb00D7162b588Ff4b",
|
|
25
33
|
"routerHelper": "0x09D65812dCD0f276e052583d41885cA5C7Dd0086",
|
|
26
|
-
"
|
|
34
|
+
"pyYtLpOracle": "0x9a9fa8338dd5e5b2188006f1cd2ef26d921650c2",
|
|
27
35
|
"yieldContractFactoryV3": "0x40Ae6da2d92aa3DCb7f8d7a7209FD12BDfcb7C85",
|
|
28
36
|
"marketFactoryV3": "0xC40fEbF5A33b8C92B187d9be0fD3fe0ac2E4B07c",
|
|
29
37
|
"poolDeployHelper": "0x73Be47237F12F36203823BAc9A4d80dC798B7015",
|
|
@@ -31,5 +39,6 @@
|
|
|
31
39
|
"proxyAdmin": "0xA28c08f165116587D4F3E708743B4dEe155c5E64",
|
|
32
40
|
"receiverEndpoint": "0x998CF52b2585e05494BF9F2bF502351a9C7FdA8f",
|
|
33
41
|
"vePendle": "0x8A09574b0401A856d89d1b583eE22E8cb0C5530B",
|
|
34
|
-
"gaugeController": "0x704478Dd72FD7F9B83d1F1e0fc18C14B54F034d0"
|
|
42
|
+
"gaugeController": "0x704478Dd72FD7F9B83d1F1e0fc18C14B54F034d0",
|
|
43
|
+
"reflector": "0x5a04b737D770Ed478cb9b65D1864c24d2E9Ca227"
|
|
35
44
|
}
|