@pendle/core-v2 0.3.0 → 0.5.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/contracts/SuperComposableYield/ISuperComposableYield.sol +14 -0
- package/contracts/SuperComposableYield/implementations/IRewardManager.sol +16 -0
- package/contracts/SuperComposableYield/implementations/RewardManager.sol +24 -5
- package/contracts/SuperComposableYield/implementations/SCYBase.sol +21 -1
- package/contracts/core/PendleMarket.sol +10 -18
- package/contracts/core/PendleMarketFactory.sol +49 -22
- package/contracts/core/PendleRouter.sol +74 -0
- package/contracts/core/PendleYieldToken.sol +20 -12
- package/contracts/core/{router/PendleRouterStaticUpg.sol → RouterStatic.sol} +6 -6
- package/contracts/core/actions/ActionCallback.sol +101 -0
- package/contracts/core/{router/PendleRouterCoreUpg.sol → actions/ActionCore.sol} +6 -10
- package/contracts/core/{router/PendleRouterYTUpg.sol → actions/ActionYT.sol} +6 -11
- package/contracts/core/{router/base/PendleRouterOTBaseUpg.sol → actions/base/ActionSCYAndOTBase.sol} +1 -5
- package/contracts/core/{router/base/PendleRouterSCYAndForgeBaseUpg.sol → actions/base/ActionSCYAndYOBase.sol} +6 -8
- package/contracts/core/{router/base/PendleRouterYTBaseUpg.sol → actions/base/ActionSCYAndYTBase.sol} +7 -99
- package/contracts/core/actions/base/ActionType.sol +11 -0
- package/contracts/interfaces/{IPRouterCore.sol → IPActionCore.sol} +1 -1
- package/contracts/interfaces/{IPRouterYT.sol → IPActionYT.sol} +1 -3
- package/contracts/interfaces/IPAllAction.sol +9 -0
- package/contracts/interfaces/IPMarketFactory.sol +11 -0
- package/contracts/interfaces/IPYieldToken.sol +21 -3
- package/contracts/libraries/math/MarketMathCore.sol +3 -2
- package/package.json +1 -1
- package/typechain-types/{PendleRouterYTBaseUpg.ts → ActionCallback.ts} +5 -5
- package/typechain-types/{PendleRouterCoreUpg.ts → ActionCore.ts} +5 -5
- package/typechain-types/{PendleRouterSCYAndForgeBaseUpg.ts → ActionSCYAndYOBase.ts} +5 -6
- package/typechain-types/{BoringOwnableData.ts → ActionSCYAndYTBase.ts} +21 -24
- package/typechain-types/{PendleRouterStaticUpg.ts → ActionStatic.ts} +5 -5
- package/typechain-types/{IPRouterYT.ts → ActionYT.ts} +27 -42
- package/typechain-types/IPActionAll.ts +1431 -0
- package/typechain-types/{IPRouterCore.ts → IPActionCore.ts} +5 -5
- package/typechain-types/{IPRouterView.ts → IPActionStatic.ts} +57 -5
- package/typechain-types/{PendleRouterYTUpg.ts → IPActionYT.ts} +5 -97
- package/typechain-types/IPAllAction.ts +1431 -0
- package/typechain-types/IPMarket.ts +3 -0
- package/typechain-types/IPMarketFactory.ts +46 -0
- package/typechain-types/IPYieldToken.ts +342 -14
- package/typechain-types/IRewardManager.ts +178 -0
- package/typechain-types/ISuperComposableYield.ts +97 -2
- package/typechain-types/PendleAaveV3SCY.ts +167 -66
- package/typechain-types/PendleBenQiErc20SCY.ts +167 -66
- package/typechain-types/PendleBtrflyScy.ts +97 -2
- package/typechain-types/PendleMarket.ts +3 -59
- package/typechain-types/PendleMarketFactory.ts +150 -24
- package/typechain-types/{PendleRouterProxy.ts → PendleRouter.ts} +29 -39
- package/typechain-types/PendleYearnVaultScy.ts +97 -2
- package/typechain-types/PendleYieldToken.ts +116 -101
- package/typechain-types/RewardManager.ts +48 -42
- package/typechain-types/RouterStatic.ts +828 -0
- package/typechain-types/SCYBase.ts +97 -2
- package/typechain-types/SCYBaseWithRewards.ts +167 -66
- package/typechain-types/factories/ActionCallback__factory.ts +116 -0
- package/typechain-types/factories/ActionCore__factory.ts +632 -0
- package/typechain-types/factories/{PendleRouterSCYAndForgeBaseUpg__factory.ts → ActionSCYAndYOBase__factory.ts} +8 -12
- package/typechain-types/factories/ActionSCYAndYTBase__factory.ts +52 -0
- package/typechain-types/factories/ActionStatic__factory.ts +308 -0
- package/typechain-types/factories/ActionYT__factory.ts +370 -0
- package/typechain-types/factories/IPActionAll__factory.ts +983 -0
- package/typechain-types/factories/{IPRouterCore__factory.ts → IPActionCore__factory.ts} +6 -6
- package/typechain-types/factories/{IPRouterView__factory.ts → IPActionStatic__factory.ts} +38 -6
- package/typechain-types/factories/{IPRouterYT__factory.ts → IPActionYT__factory.ts} +6 -29
- package/typechain-types/factories/IPAllAction__factory.ts +983 -0
- package/typechain-types/factories/IPMarketFactory__factory.ts +28 -0
- package/typechain-types/factories/IPMarket__factory.ts +7 -2
- package/typechain-types/factories/IPYieldToken__factory.ts +158 -1
- package/typechain-types/factories/IRewardManager__factory.ts +92 -0
- package/typechain-types/factories/ISuperComposableYield__factory.ts +68 -0
- package/typechain-types/factories/PendleAaveV3SCY__factory.ts +102 -34
- package/typechain-types/factories/PendleBenQiErc20SCY__factory.ts +102 -34
- package/typechain-types/factories/PendleBtrflyScy__factory.ts +69 -1
- package/typechain-types/factories/PendleMarketFactory__factory.ts +112 -17
- package/typechain-types/factories/PendleMarket__factory.ts +8 -69
- package/typechain-types/factories/PendleRouter__factory.ts +282 -0
- package/typechain-types/factories/PendleYearnVaultScy__factory.ts +69 -1
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldToken__factory.ts +58 -58
- package/typechain-types/factories/RewardManager__factory.ts +18 -18
- package/typechain-types/factories/RouterStatic__factory.ts +883 -0
- package/typechain-types/factories/SCYBaseWithRewards__factory.ts +101 -33
- package/typechain-types/factories/SCYBase__factory.ts +68 -0
- package/typechain-types/hardhat.d.ts +93 -75
- package/typechain-types/index.ts +22 -18
- package/contracts/core/router/PendleRouterProxy.sol +0 -84
- package/contracts/interfaces/IPFlashCallBack.sol +0 -10
- package/typechain-types/BoringOwnable.ts +0 -194
- package/typechain-types/BoringOwnableUpg.ts +0 -194
- package/typechain-types/BoringOwnableUpgData.ts +0 -100
- package/typechain-types/IPFlashCallback.ts +0 -115
- package/typechain-types/IPermissionsV2.ts +0 -87
- package/typechain-types/PendleRouterViewUpg.ts +0 -307
- package/typechain-types/PermissionsV2.ts +0 -87
- package/typechain-types/factories/BoringOwnableData__factory.ts +0 -90
- package/typechain-types/factories/BoringOwnableUpgData__factory.ts +0 -94
- package/typechain-types/factories/BoringOwnableUpg__factory.ts +0 -139
- package/typechain-types/factories/BoringOwnable__factory.ts +0 -149
- package/typechain-types/factories/IPFlashCallback__factory.ts +0 -49
- package/typechain-types/factories/IPermissionsV2__factory.ts +0 -39
- package/typechain-types/factories/PendleRouterCoreUpg__factory.ts +0 -635
- package/typechain-types/factories/PendleRouterProxy__factory.ts +0 -285
- package/typechain-types/factories/PendleRouterStaticUpg__factory.ts +0 -315
- package/typechain-types/factories/PendleRouterViewUpg__factory.ts +0 -265
- package/typechain-types/factories/PendleRouterYTBaseUpg__factory.ts +0 -66
- package/typechain-types/factories/PendleRouterYTUpg__factory.ts +0 -422
- package/typechain-types/factories/PermissionsV2__factory.ts +0 -36
package/contracts/core/{router/base/PendleRouterOTBaseUpg.sol → actions/base/ActionSCYAndOTBase.sol}
RENAMED
|
@@ -9,7 +9,7 @@ import "../../../libraries/math/MarketApproxLib.sol";
|
|
|
9
9
|
import "../../../libraries/math/MarketMathAux.sol";
|
|
10
10
|
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
11
11
|
|
|
12
|
-
abstract contract
|
|
12
|
+
abstract contract ActionSCYAndOTBase {
|
|
13
13
|
using Math for uint256;
|
|
14
14
|
using Math for int256;
|
|
15
15
|
using MarketMathCore for MarketState;
|
|
@@ -18,10 +18,6 @@ abstract contract PendleRouterOTBaseUpg {
|
|
|
18
18
|
using SafeERC20 for IERC20;
|
|
19
19
|
|
|
20
20
|
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
21
|
-
constructor() //solhint-disable-next-line no-empty-blocks
|
|
22
|
-
{
|
|
23
|
-
|
|
24
|
-
}
|
|
25
21
|
|
|
26
22
|
/**
|
|
27
23
|
* @notice addLiquidity to the market, using both SCY & OT, the receiver will receive LP before
|
|
@@ -6,16 +6,14 @@ import "../../../periphery/PendleJoeSwapHelperUpg.sol";
|
|
|
6
6
|
import "../../../SuperComposableYield/ISuperComposableYield.sol";
|
|
7
7
|
import "../../../interfaces/IPYieldToken.sol";
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
// solhint-disable no-empty-blocks
|
|
10
|
+
abstract contract ActionSCYAndYOBase is PendleJoeSwapHelperUpg {
|
|
10
11
|
using SafeERC20 for IERC20;
|
|
11
12
|
|
|
12
13
|
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
13
14
|
constructor(address _joeRouter, address _joeFactory)
|
|
14
15
|
PendleJoeSwapHelperUpg(_joeRouter, _joeFactory)
|
|
15
|
-
|
|
16
|
-
{
|
|
17
|
-
|
|
18
|
-
}
|
|
16
|
+
{}
|
|
19
17
|
|
|
20
18
|
/**
|
|
21
19
|
* @notice swap rawToken to baseToken -> baseToken to mint SCY
|
|
@@ -44,7 +42,7 @@ abstract contract PendleRouterSCYAndForgeBaseUpg is PendleJoeSwapHelperUpg {
|
|
|
44
42
|
}
|
|
45
43
|
|
|
46
44
|
address baseToken = path[path.length - 1];
|
|
47
|
-
netScyOut = ISuperComposableYield(SCY).
|
|
45
|
+
netScyOut = ISuperComposableYield(SCY).mintNoPull(receiver, baseToken, minScyOut);
|
|
48
46
|
}
|
|
49
47
|
|
|
50
48
|
/**
|
|
@@ -72,13 +70,13 @@ abstract contract PendleRouterSCYAndForgeBaseUpg is PendleJoeSwapHelperUpg {
|
|
|
72
70
|
|
|
73
71
|
address baseToken = path[0];
|
|
74
72
|
if (path.length == 1) {
|
|
75
|
-
netRawTokenOut = ISuperComposableYield(SCY).
|
|
73
|
+
netRawTokenOut = ISuperComposableYield(SCY).redeemNoPull(
|
|
76
74
|
receiver,
|
|
77
75
|
baseToken,
|
|
78
76
|
minRawTokenOut
|
|
79
77
|
);
|
|
80
78
|
} else {
|
|
81
|
-
uint256 netBaseTokenOut = ISuperComposableYield(SCY).
|
|
79
|
+
uint256 netBaseTokenOut = ISuperComposableYield(SCY).redeemNoPull(
|
|
82
80
|
_getFirstPair(path),
|
|
83
81
|
baseToken,
|
|
84
82
|
1
|
package/contracts/core/{router/base/PendleRouterYTBaseUpg.sol → actions/base/ActionSCYAndYTBase.sol}
RENAMED
|
@@ -3,14 +3,14 @@ pragma solidity 0.8.9;
|
|
|
3
3
|
|
|
4
4
|
import "../../../interfaces/IPMarketFactory.sol";
|
|
5
5
|
import "../../../interfaces/IPMarket.sol";
|
|
6
|
-
import "../../../interfaces/IPMarketAddRemoveCallback.sol";
|
|
7
|
-
import "../../../interfaces/IPMarketSwapCallback.sol";
|
|
8
6
|
import "../../../SuperComposableYield/SCYUtils.sol";
|
|
9
7
|
import "../../../libraries/math/MarketApproxLib.sol";
|
|
10
8
|
import "../../../libraries/math/MarketMathAux.sol";
|
|
9
|
+
import "./ActionSCYAndYOBase.sol";
|
|
10
|
+
import "./ActionType.sol";
|
|
11
11
|
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
12
12
|
|
|
13
|
-
abstract contract
|
|
13
|
+
abstract contract ActionSCYAndYTBase is ActionSCYAndYOBase, ActionType {
|
|
14
14
|
using Math for uint256;
|
|
15
15
|
using Math for int256;
|
|
16
16
|
using MarketMathCore for MarketState;
|
|
@@ -19,28 +19,6 @@ abstract contract PendleRouterYTBaseUpg is IPMarketSwapCallback {
|
|
|
19
19
|
using SafeERC20 for ISuperComposableYield;
|
|
20
20
|
using SafeERC20 for IPYieldToken;
|
|
21
21
|
|
|
22
|
-
// solhint-disable-next-line
|
|
23
|
-
enum YT_SWAP_TYPE {
|
|
24
|
-
ExactYtForScy,
|
|
25
|
-
SCYForExactYt,
|
|
26
|
-
ExactScyForYt,
|
|
27
|
-
YtForExactScy
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
address public immutable marketFactory;
|
|
31
|
-
|
|
32
|
-
modifier onlyPendleMarket(address market) {
|
|
33
|
-
require(IPMarketFactory(marketFactory).isValidMarket(market), "INVALID_MARKET");
|
|
34
|
-
_;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/// @dev since this contract will be proxied, it must not contains non-immutable variables
|
|
38
|
-
constructor(
|
|
39
|
-
address _marketFactory //solhint-disable-next-line no-empty-blocks
|
|
40
|
-
) {
|
|
41
|
-
marketFactory = _marketFactory;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
22
|
function _swapExactScyForYt(
|
|
45
23
|
address receiver,
|
|
46
24
|
address market,
|
|
@@ -66,7 +44,7 @@ abstract contract PendleRouterYTBaseUpg is IPMarketSwapCallback {
|
|
|
66
44
|
receiver,
|
|
67
45
|
netYtOut, // exactOtIn = netYtOut
|
|
68
46
|
1,
|
|
69
|
-
abi.encode(
|
|
47
|
+
abi.encode(ACTION_TYPE.SwapExactScyForYt, receiver)
|
|
70
48
|
);
|
|
71
49
|
}
|
|
72
50
|
|
|
@@ -96,7 +74,7 @@ abstract contract PendleRouterYTBaseUpg is IPMarketSwapCallback {
|
|
|
96
74
|
receiver,
|
|
97
75
|
exactYtIn, // exactOtOut = exactYtIn
|
|
98
76
|
type(uint256).max,
|
|
99
|
-
abi.encode(
|
|
77
|
+
abi.encode(ACTION_TYPE.SwapExactYtForScy, receiver)
|
|
100
78
|
);
|
|
101
79
|
|
|
102
80
|
netScyOut = SCY.balanceOf(receiver) - preBalanceScy;
|
|
@@ -122,7 +100,7 @@ abstract contract PendleRouterYTBaseUpg is IPMarketSwapCallback {
|
|
|
122
100
|
receiver,
|
|
123
101
|
exactYtOut, // exactOtIn = exactYtOut
|
|
124
102
|
1,
|
|
125
|
-
abi.encode(
|
|
103
|
+
abi.encode(ACTION_TYPE.SwapSCYForExactYt, msg.sender, receiver)
|
|
126
104
|
);
|
|
127
105
|
|
|
128
106
|
netScyIn = preBalanceScy - SCY.balanceOf(receiver);
|
|
@@ -155,77 +133,7 @@ abstract contract PendleRouterYTBaseUpg is IPMarketSwapCallback {
|
|
|
155
133
|
address(YT),
|
|
156
134
|
netYtIn, // exactOtOut = netYtIn
|
|
157
135
|
type(uint256).max,
|
|
158
|
-
abi.encode(
|
|
136
|
+
abi.encode(ACTION_TYPE.SwapYtForExactScy, receiver)
|
|
159
137
|
);
|
|
160
138
|
}
|
|
161
|
-
|
|
162
|
-
function swapCallback(
|
|
163
|
-
int256 otToAccount,
|
|
164
|
-
int256 scyToAccount,
|
|
165
|
-
bytes calldata data
|
|
166
|
-
) external override onlyPendleMarket(msg.sender) {
|
|
167
|
-
(YT_SWAP_TYPE swapType, ) = abi.decode(data, (YT_SWAP_TYPE, bytes));
|
|
168
|
-
|
|
169
|
-
if (swapType == YT_SWAP_TYPE.ExactScyForYt) {
|
|
170
|
-
_swapExactScyForYt_callback(msg.sender, data);
|
|
171
|
-
} else if (swapType == YT_SWAP_TYPE.ExactYtForScy) {
|
|
172
|
-
_swapYtForScy_callback(msg.sender, scyToAccount, data);
|
|
173
|
-
} else if (swapType == YT_SWAP_TYPE.SCYForExactYt) {
|
|
174
|
-
_swapScyForExactYt_callback(msg.sender, otToAccount, scyToAccount, data);
|
|
175
|
-
} else if (swapType == YT_SWAP_TYPE.YtForExactScy) {
|
|
176
|
-
_swapYtForScy_callback(msg.sender, scyToAccount, data);
|
|
177
|
-
} else {
|
|
178
|
-
require(false, "unknown swapType");
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
function _swapExactScyForYt_callback(address market, bytes calldata data) internal {
|
|
183
|
-
(, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
184
|
-
(, address receiver) = abi.decode(data, (YT_SWAP_TYPE, address));
|
|
185
|
-
|
|
186
|
-
YT.mintYO(market, receiver);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function _swapScyForExactYt_callback(
|
|
190
|
-
address market,
|
|
191
|
-
int256 otToAccount,
|
|
192
|
-
int256 scyToAccount,
|
|
193
|
-
bytes calldata data
|
|
194
|
-
) internal {
|
|
195
|
-
(, address payer, address receiver) = abi.decode(data, (YT_SWAP_TYPE, address, address));
|
|
196
|
-
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
197
|
-
|
|
198
|
-
uint256 otOwed = otToAccount.neg().Uint();
|
|
199
|
-
uint256 scyReceived = scyToAccount.Uint();
|
|
200
|
-
|
|
201
|
-
// otOwed = totalAsset
|
|
202
|
-
uint256 scyNeedTotal = SCYUtils.assetToScy(SCY.scyIndexCurrent(), otOwed);
|
|
203
|
-
|
|
204
|
-
uint256 netScyToPull = scyNeedTotal.subMax0(scyReceived);
|
|
205
|
-
SCY.safeTransferFrom(payer, address(YT), netScyToPull);
|
|
206
|
-
|
|
207
|
-
YT.mintYO(market, receiver);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
@dev receive OT -> pair with YT to redeem SCY -> payback SCY
|
|
212
|
-
*/
|
|
213
|
-
function _swapYtForScy_callback(
|
|
214
|
-
address market,
|
|
215
|
-
int256 scyToAccount,
|
|
216
|
-
bytes calldata data
|
|
217
|
-
) internal {
|
|
218
|
-
(, address receiver) = abi.decode(data, (YT_SWAP_TYPE, address));
|
|
219
|
-
(ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
220
|
-
|
|
221
|
-
uint256 scyOwed = scyToAccount.neg().Uint();
|
|
222
|
-
|
|
223
|
-
uint256 netScyReceived = YT.redeemYO(address(this));
|
|
224
|
-
|
|
225
|
-
SCY.safeTransfer(market, scyOwed);
|
|
226
|
-
|
|
227
|
-
if (receiver != address(this)) {
|
|
228
|
-
SCY.safeTransfer(receiver, netScyReceived - scyOwed);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
139
|
}
|
|
@@ -5,4 +5,15 @@ interface IPMarketFactory {
|
|
|
5
5
|
function isValidMarket(address market) external view returns (bool);
|
|
6
6
|
|
|
7
7
|
function treasury() external view returns (address);
|
|
8
|
+
|
|
9
|
+
// If this is changed, change the readState function in market as well
|
|
10
|
+
function marketConfig()
|
|
11
|
+
external
|
|
12
|
+
view
|
|
13
|
+
returns (
|
|
14
|
+
address treasury,
|
|
15
|
+
uint96 feeRateRoot,
|
|
16
|
+
uint32 rateOracleTimeWindow,
|
|
17
|
+
uint8 reserveFeePercent
|
|
18
|
+
);
|
|
8
19
|
}
|
|
@@ -1,15 +1,33 @@
|
|
|
1
1
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
2
|
pragma solidity 0.8.9;
|
|
3
3
|
import "./IPBaseToken.sol";
|
|
4
|
+
import "../SuperComposableYield/implementations/IRewardManager.sol";
|
|
4
5
|
|
|
5
|
-
interface IPYieldToken is IPBaseToken {
|
|
6
|
+
interface IPYieldToken is IPBaseToken, IRewardManager {
|
|
6
7
|
function mintYO(address receiverOT, address receiverYT) external returns (uint256 amountYOOut);
|
|
7
8
|
|
|
8
9
|
function redeemYO(address receiver) external returns (uint256 amountScyOut);
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
// minimum of OT & YT balance
|
|
12
|
+
|
|
13
|
+
function redeemDueInterest(address user) external returns (uint256 interestOut);
|
|
14
|
+
|
|
15
|
+
function redeemDueRewards(address user) external returns (uint256[] memory rewardsOut);
|
|
16
|
+
|
|
17
|
+
function updateGlobalReward() external;
|
|
18
|
+
|
|
19
|
+
function updateUserReward(address user) external;
|
|
20
|
+
|
|
21
|
+
function updateUserInterest(address user) external;
|
|
22
|
+
|
|
23
|
+
function getInterestData(address user)
|
|
11
24
|
external
|
|
12
|
-
|
|
25
|
+
view
|
|
26
|
+
returns (uint256 lastScyIndex, uint256 dueInterest);
|
|
27
|
+
|
|
28
|
+
function getScyIndexBeforeExpiry() external returns (uint256 res);
|
|
29
|
+
|
|
30
|
+
function withdrawFeeToTreasury() external;
|
|
13
31
|
|
|
14
32
|
function SCY() external view returns (address);
|
|
15
33
|
|
|
@@ -10,12 +10,13 @@ struct MarketState {
|
|
|
10
10
|
int256 totalScy;
|
|
11
11
|
int256 totalLp;
|
|
12
12
|
uint256 oracleRate;
|
|
13
|
+
address treasury;
|
|
13
14
|
/// immutable variables ///
|
|
14
15
|
int256 scalarRoot;
|
|
15
16
|
uint256 feeRateRoot;
|
|
16
17
|
uint256 rateOracleTimeWindow;
|
|
17
18
|
uint256 expiry;
|
|
18
|
-
|
|
19
|
+
uint256 reserveFeePercent; // base 100
|
|
19
20
|
/// last trade data ///
|
|
20
21
|
uint256 lastImpliedRate;
|
|
21
22
|
uint256 lastTradeTime;
|
|
@@ -222,7 +223,7 @@ library MarketMathCore {
|
|
|
222
223
|
fee = ((preFeeAssetToAccount * (Math.IONE - fee)) / fee).neg();
|
|
223
224
|
}
|
|
224
225
|
|
|
225
|
-
netAssetToReserve = (fee * market.reserveFeePercent) / PERCENTAGE_DECIMALS;
|
|
226
|
+
netAssetToReserve = (fee * market.reserveFeePercent.Int()) / PERCENTAGE_DECIMALS;
|
|
226
227
|
netAssetToAccount = preFeeAssetToAccount - fee;
|
|
227
228
|
// netAssetToMarket = (preFeeAssetToAccount - fee + netAssetToReserve)
|
|
228
229
|
// .neg();
|
package/package.json
CHANGED
|
@@ -22,8 +22,8 @@ import type {
|
|
|
22
22
|
OnEvent,
|
|
23
23
|
} from "./common";
|
|
24
24
|
|
|
25
|
-
export interface
|
|
26
|
-
contractName: "
|
|
25
|
+
export interface ActionCallbackInterface extends utils.Interface {
|
|
26
|
+
contractName: "ActionCallback";
|
|
27
27
|
functions: {
|
|
28
28
|
"marketFactory()": FunctionFragment;
|
|
29
29
|
"swapCallback(int256,int256,bytes)": FunctionFragment;
|
|
@@ -50,13 +50,13 @@ export interface PendleRouterYTBaseUpgInterface extends utils.Interface {
|
|
|
50
50
|
events: {};
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
export interface
|
|
54
|
-
contractName: "
|
|
53
|
+
export interface ActionCallback extends BaseContract {
|
|
54
|
+
contractName: "ActionCallback";
|
|
55
55
|
connect(signerOrProvider: Signer | Provider | string): this;
|
|
56
56
|
attach(addressOrName: string): this;
|
|
57
57
|
deployed(): Promise<this>;
|
|
58
58
|
|
|
59
|
-
interface:
|
|
59
|
+
interface: ActionCallbackInterface;
|
|
60
60
|
|
|
61
61
|
queryFilter<TEvent extends TypedEvent>(
|
|
62
62
|
event: TypedEventFilter<TEvent>,
|
|
@@ -22,8 +22,8 @@ import type {
|
|
|
22
22
|
OnEvent,
|
|
23
23
|
} from "./common";
|
|
24
24
|
|
|
25
|
-
export interface
|
|
26
|
-
contractName: "
|
|
25
|
+
export interface ActionCoreInterface extends utils.Interface {
|
|
26
|
+
contractName: "ActionCore";
|
|
27
27
|
functions: {
|
|
28
28
|
"addLiquidity(address,address,uint256,uint256,uint256)": FunctionFragment;
|
|
29
29
|
"joeFactory()": FunctionFragment;
|
|
@@ -174,13 +174,13 @@ export interface PendleRouterCoreUpgInterface extends utils.Interface {
|
|
|
174
174
|
events: {};
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
export interface
|
|
178
|
-
contractName: "
|
|
177
|
+
export interface ActionCore extends BaseContract {
|
|
178
|
+
contractName: "ActionCore";
|
|
179
179
|
connect(signerOrProvider: Signer | Provider | string): this;
|
|
180
180
|
attach(addressOrName: string): this;
|
|
181
181
|
deployed(): Promise<this>;
|
|
182
182
|
|
|
183
|
-
interface:
|
|
183
|
+
interface: ActionCoreInterface;
|
|
184
184
|
|
|
185
185
|
queryFilter<TEvent extends TypedEvent>(
|
|
186
186
|
event: TypedEventFilter<TEvent>,
|
|
@@ -19,9 +19,8 @@ import type {
|
|
|
19
19
|
OnEvent,
|
|
20
20
|
} from "./common";
|
|
21
21
|
|
|
22
|
-
export interface
|
|
23
|
-
|
|
24
|
-
contractName: "PendleRouterSCYAndForgeBaseUpg";
|
|
22
|
+
export interface ActionSCYAndYOBaseInterface extends utils.Interface {
|
|
23
|
+
contractName: "ActionSCYAndYOBase";
|
|
25
24
|
functions: {
|
|
26
25
|
"joeFactory()": FunctionFragment;
|
|
27
26
|
"joeRouter()": FunctionFragment;
|
|
@@ -39,13 +38,13 @@ export interface PendleRouterSCYAndForgeBaseUpgInterface
|
|
|
39
38
|
events: {};
|
|
40
39
|
}
|
|
41
40
|
|
|
42
|
-
export interface
|
|
43
|
-
contractName: "
|
|
41
|
+
export interface ActionSCYAndYOBase extends BaseContract {
|
|
42
|
+
contractName: "ActionSCYAndYOBase";
|
|
44
43
|
connect(signerOrProvider: Signer | Provider | string): this;
|
|
45
44
|
attach(addressOrName: string): this;
|
|
46
45
|
deployed(): Promise<this>;
|
|
47
46
|
|
|
48
|
-
interface:
|
|
47
|
+
interface: ActionSCYAndYOBaseInterface;
|
|
49
48
|
|
|
50
49
|
queryFilter<TEvent extends TypedEvent>(
|
|
51
50
|
event: TypedEventFilter<TEvent>,
|
|
@@ -19,35 +19,32 @@ import type {
|
|
|
19
19
|
OnEvent,
|
|
20
20
|
} from "./common";
|
|
21
21
|
|
|
22
|
-
export interface
|
|
23
|
-
contractName: "
|
|
22
|
+
export interface ActionSCYAndYTBaseInterface extends utils.Interface {
|
|
23
|
+
contractName: "ActionSCYAndYTBase";
|
|
24
24
|
functions: {
|
|
25
|
-
"
|
|
26
|
-
"
|
|
25
|
+
"joeFactory()": FunctionFragment;
|
|
26
|
+
"joeRouter()": FunctionFragment;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
|
|
30
29
|
encodeFunctionData(
|
|
31
|
-
functionFragment: "
|
|
30
|
+
functionFragment: "joeFactory",
|
|
32
31
|
values?: undefined
|
|
33
32
|
): string;
|
|
33
|
+
encodeFunctionData(functionFragment: "joeRouter", values?: undefined): string;
|
|
34
34
|
|
|
35
|
-
decodeFunctionResult(functionFragment: "
|
|
36
|
-
decodeFunctionResult(
|
|
37
|
-
functionFragment: "pendingOwner",
|
|
38
|
-
data: BytesLike
|
|
39
|
-
): Result;
|
|
35
|
+
decodeFunctionResult(functionFragment: "joeFactory", data: BytesLike): Result;
|
|
36
|
+
decodeFunctionResult(functionFragment: "joeRouter", data: BytesLike): Result;
|
|
40
37
|
|
|
41
38
|
events: {};
|
|
42
39
|
}
|
|
43
40
|
|
|
44
|
-
export interface
|
|
45
|
-
contractName: "
|
|
41
|
+
export interface ActionSCYAndYTBase extends BaseContract {
|
|
42
|
+
contractName: "ActionSCYAndYTBase";
|
|
46
43
|
connect(signerOrProvider: Signer | Provider | string): this;
|
|
47
44
|
attach(addressOrName: string): this;
|
|
48
45
|
deployed(): Promise<this>;
|
|
49
46
|
|
|
50
|
-
interface:
|
|
47
|
+
interface: ActionSCYAndYTBaseInterface;
|
|
51
48
|
|
|
52
49
|
queryFilter<TEvent extends TypedEvent>(
|
|
53
50
|
event: TypedEventFilter<TEvent>,
|
|
@@ -69,32 +66,32 @@ export interface BoringOwnableData extends BaseContract {
|
|
|
69
66
|
removeListener: OnEvent<this>;
|
|
70
67
|
|
|
71
68
|
functions: {
|
|
72
|
-
|
|
69
|
+
joeFactory(overrides?: CallOverrides): Promise<[string]>;
|
|
73
70
|
|
|
74
|
-
|
|
71
|
+
joeRouter(overrides?: CallOverrides): Promise<[string]>;
|
|
75
72
|
};
|
|
76
73
|
|
|
77
|
-
|
|
74
|
+
joeFactory(overrides?: CallOverrides): Promise<string>;
|
|
78
75
|
|
|
79
|
-
|
|
76
|
+
joeRouter(overrides?: CallOverrides): Promise<string>;
|
|
80
77
|
|
|
81
78
|
callStatic: {
|
|
82
|
-
|
|
79
|
+
joeFactory(overrides?: CallOverrides): Promise<string>;
|
|
83
80
|
|
|
84
|
-
|
|
81
|
+
joeRouter(overrides?: CallOverrides): Promise<string>;
|
|
85
82
|
};
|
|
86
83
|
|
|
87
84
|
filters: {};
|
|
88
85
|
|
|
89
86
|
estimateGas: {
|
|
90
|
-
|
|
87
|
+
joeFactory(overrides?: CallOverrides): Promise<BigNumber>;
|
|
91
88
|
|
|
92
|
-
|
|
89
|
+
joeRouter(overrides?: CallOverrides): Promise<BigNumber>;
|
|
93
90
|
};
|
|
94
91
|
|
|
95
92
|
populateTransaction: {
|
|
96
|
-
|
|
93
|
+
joeFactory(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
|
97
94
|
|
|
98
|
-
|
|
95
|
+
joeRouter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
|
99
96
|
};
|
|
100
97
|
}
|
|
@@ -22,8 +22,8 @@ import type {
|
|
|
22
22
|
OnEvent,
|
|
23
23
|
} from "./common";
|
|
24
24
|
|
|
25
|
-
export interface
|
|
26
|
-
contractName: "
|
|
25
|
+
export interface ActionStaticInterface extends utils.Interface {
|
|
26
|
+
contractName: "ActionStatic";
|
|
27
27
|
functions: {
|
|
28
28
|
"addLiquidityStatic(address,uint256,uint256)": FunctionFragment;
|
|
29
29
|
"getOtImpliedYield(address)": FunctionFragment;
|
|
@@ -107,13 +107,13 @@ export interface PendleRouterStaticUpgInterface extends utils.Interface {
|
|
|
107
107
|
events: {};
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
export interface
|
|
111
|
-
contractName: "
|
|
110
|
+
export interface ActionStatic extends BaseContract {
|
|
111
|
+
contractName: "ActionStatic";
|
|
112
112
|
connect(signerOrProvider: Signer | Provider | string): this;
|
|
113
113
|
attach(addressOrName: string): this;
|
|
114
114
|
deployed(): Promise<this>;
|
|
115
115
|
|
|
116
|
-
interface:
|
|
116
|
+
interface: ActionStaticInterface;
|
|
117
117
|
|
|
118
118
|
queryFilter<TEvent extends TypedEvent>(
|
|
119
119
|
event: TypedEventFilter<TEvent>,
|