@pendle/core-v2 4.5.1-beta-1 → 4.5.1-oracle-beta
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/PendleERC20WithSupplyCapSY.sol/PendleERC20WithSupplyCapSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleERC20WithSupplyCapSY.sol/PendleERC20WithSupplyCapSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Swell/PendleSwellRswETHStakingSY.sol/PendleSwellRswETHStakingSY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Swell/PendleSwellRswETHStakingSY.sol/PendleSwellRswETHStakingSY.json +1049 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Swell/PendleSwellStakingERC20SY.sol/PendleSwellStakingERC20SY.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Swell/PendleSwellStakingERC20SY.sol/PendleSwellStakingERC20SY.json +1039 -0
- package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.json +0 -431
- package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.json +0 -431
- package/build/artifacts/contracts/interfaces/IPGovernanceProxy.sol/IPGovernanceProxy.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPGovernanceProxy.sol/IPGovernanceProxy.json +60 -0
- 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/IPPausingInterface.sol/IPPausingInterface.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPPausingInterface.sol/IPPausingInterface.json +25 -0
- package/build/artifacts/contracts/interfaces/Swell/ISwellSimpleStakingERC20.sol/ISwellSimpleStakingERC20.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/Swell/ISwellSimpleStakingERC20.sol/ISwellSimpleStakingERC20.json +207 -0
- package/build/artifacts/contracts/offchain-helpers/PendleGovernanceProxy.sol/PendleGovernanceProxy.dbg.json +4 -0
- package/build/artifacts/contracts/offchain-helpers/PendleGovernanceProxy.sol/PendleGovernanceProxy.json +401 -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/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/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 +2 -591
- 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/base/ActionBase.sol/ActionBase.dbg.json +1 -1
- package/contracts/core/StandardizedYield/implementations/PendleERC20WithSupplyCapSY.sol +6 -1
- package/contracts/core/StandardizedYield/implementations/Swell/PendleSwellRswETHStakingSY.sol +56 -0
- package/contracts/core/StandardizedYield/implementations/Swell/PendleSwellStakingERC20SY.sol +111 -0
- package/contracts/interfaces/IPActionMiscV3.sol +0 -38
- package/contracts/interfaces/IPGovernanceProxy.sol +14 -0
- package/contracts/interfaces/{IPPtLpOracle.sol → IPPYLpOracle.sol} +5 -1
- package/contracts/interfaces/IPPausingInterface.sol +8 -0
- package/contracts/interfaces/Swell/ISwellSimpleStakingERC20.sol +66 -0
- package/contracts/offchain-helpers/PendleGovernanceProxy.sol +84 -0
- package/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol +12 -4
- package/contracts/oracles/PendleLpOracleLib.sol +4 -4
- package/contracts/oracles/{PendlePtLpOracle.sol → PendlePYLpOracle.sol} +44 -16
- 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 +36 -216
- package/contracts/router/ActionSwapYTV3.sol +85 -0
- package/contracts/router/base/ActionBase.sol +1 -106
- package/deployments/1-markets/EZETH-MAINNET-SEP2024.json +11 -0
- package/deployments/1-markets/PUFETH-MAINNET-SEP2024.json +11 -0
- package/deployments/1-markets/RSETH-MAINNET-SEP2024.json +11 -0
- package/deployments/1-markets/RSWETH-SWELL-STAKING-MAINNET-JUL2024.json +11 -0
- package/deployments/1-markets/SUSDE-MAINNET-SEP2024.json +13 -0
- package/deployments/1-markets/WEETH-MAINNET-SEP2024.json +11 -0
- package/deployments/42161-markets/EZETH-ARB-SEP2024.json +11 -0
- package/deployments/42161-markets/RSETH-ARBITRUM-SEP2024.json +11 -0
- package/deployments/42161-markets/SILO-PTEETH-ARBITRUM-JUNE2024.json +11 -0
- package/deployments/42161-markets/SILO-PTEZETH-ARBITRUM-JUNE2024.json +11 -0
- package/deployments/42161-markets/WEETH-ARB-SEP2024.json +11 -0
- package/deployments/56-markets/WEETH-BSC-SEP2024.json +11 -0
- package/package.json +1 -1
- package/typechain-types/ActionMiscV3.ts +16 -379
- package/typechain-types/BoringPYUsdChainlinkAssetOracle.ts +244 -0
- package/typechain-types/BoringPYUsdChainlinkSYOracle.ts +243 -0
- package/typechain-types/IPActionMiscV3.ts +16 -249
- package/typechain-types/IPAllActionV3.ts +0 -156
- package/typechain-types/IPGovernanceProxy.ts +142 -0
- package/typechain-types/IPPYLpOracle.ts +379 -0
- package/typechain-types/IPPausingInterface.ts +112 -0
- package/typechain-types/PendleGovernanceProxy.ts +603 -0
- package/typechain-types/PendlePYLpOracle.ts +612 -0
- package/typechain-types/factories/ActionAddRemoveLiqV3__factory.ts +1 -1
- package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +1 -1
- package/typechain-types/factories/ActionMiscV3__factory.ts +1 -590
- 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/BoringPYUsdChainlinkAssetOracle__factory.ts +269 -0
- package/typechain-types/factories/BoringPYUsdChainlinkSYOracle__factory.ts +267 -0
- package/typechain-types/factories/IPActionMiscV3__factory.ts +0 -431
- package/typechain-types/factories/IPAllActionV3__factory.ts +0 -431
- package/typechain-types/factories/IPGovernanceProxy__factory.ts +75 -0
- package/typechain-types/factories/IPPYLpOracle__factory.ts +214 -0
- package/typechain-types/factories/IPPausingInterface__factory.ts +40 -0
- package/typechain-types/factories/PendleERC20WithSupplyCapSY__factory.ts +1 -1
- package/typechain-types/factories/PendleGovernanceProxy__factory.ts +458 -0
- package/typechain-types/factories/PendlePYLpOracle__factory.ts +487 -0
- package/typechain-types/factories/PendlePoolDeployHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleSwellRswETHStakingSY__factory.ts +1 -1
- package/typechain-types/hardhat.d.ts +63 -0
- package/typechain-types/index.ts +14 -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
- /package/deployments/1-markets/{EZETH-JUNE2024.json → EZETH-APR2024.json} +0 -0
- /package/deployments/42161-markets/{RSETH-MAY2024.json → RSETH-JUNE2024.json} +0 -0
- /package/deployments/42161-markets/{WEETH-MAY2024.json → WEETH-JUNE2024.json} +0 -0
|
@@ -79,16 +79,18 @@ contract ActionMiscV3 is IPActionMiscV3, ActionBase {
|
|
|
79
79
|
address[] calldata yts,
|
|
80
80
|
address[] calldata markets
|
|
81
81
|
) external {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
82
|
+
unchecked {
|
|
83
|
+
for (uint256 i = 0; i < sys.length; ++i) {
|
|
84
|
+
IStandardizedYield(sys[i]).claimRewards(user);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
for (uint256 i = 0; i < yts.length; ++i) {
|
|
88
|
+
IPYieldToken(yts[i]).redeemDueInterestAndRewards(user, true, true);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
for (uint256 i = 0; i < markets.length; ++i) {
|
|
92
|
+
IPMarket(markets[i]).redeemRewards(user);
|
|
93
|
+
}
|
|
92
94
|
}
|
|
93
95
|
}
|
|
94
96
|
|
|
@@ -116,222 +118,40 @@ contract ActionMiscV3 is IPActionMiscV3, ActionBase {
|
|
|
116
118
|
netTokenOut = IStandardizedYield(SY).redeem(receiver, netSyInterm, tokenRedeemSy, minTokenOut, true);
|
|
117
119
|
}
|
|
118
120
|
|
|
119
|
-
event ExitMultiplePreExpiry(
|
|
120
|
-
address indexed caller,
|
|
121
|
-
address indexed market,
|
|
122
|
-
address indexed token,
|
|
123
|
-
address receiver,
|
|
124
|
-
uint256 netLpToRemove,
|
|
125
|
-
uint256 netPtFromRemove,
|
|
126
|
-
uint256 netSyFromRemove,
|
|
127
|
-
uint256 netPyRedeem,
|
|
128
|
-
uint256 netSyFromRedeem,
|
|
129
|
-
uint256 netPtSwap,
|
|
130
|
-
uint256 netYtSwap,
|
|
131
|
-
uint256 netSyFromSwap,
|
|
132
|
-
uint256 netSyFee,
|
|
133
|
-
uint256 netTokenOut
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
event ExitMultiplePostExpiry(
|
|
137
|
-
address indexed caller,
|
|
138
|
-
address indexed market,
|
|
139
|
-
address indexed token,
|
|
140
|
-
address receiver,
|
|
141
|
-
uint256 netLpToRemove,
|
|
142
|
-
uint256 netPtFromRemove, //
|
|
143
|
-
uint256 netSyFromRemove, //
|
|
144
|
-
uint256 netPtRedeem,
|
|
145
|
-
uint256 netSyFromRedeem, //
|
|
146
|
-
uint256 netTokenOut //
|
|
147
|
-
);
|
|
148
|
-
|
|
149
|
-
// TODO: need to allow exit to SY as well
|
|
150
|
-
|
|
151
|
-
struct ExitMultipleParams {
|
|
152
|
-
address receiver;
|
|
153
|
-
address market;
|
|
154
|
-
uint256 netPtIn;
|
|
155
|
-
uint256 netYtIn;
|
|
156
|
-
uint256 netLpIn;
|
|
157
|
-
TokenOutput output;
|
|
158
|
-
LimitOrderData limit;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
function exitMultiplePreExpiry(
|
|
162
|
-
address receiver,
|
|
163
|
-
address market,
|
|
164
|
-
uint256 netPtIn,
|
|
165
|
-
uint256 netYtIn,
|
|
166
|
-
uint256 netLpIn,
|
|
167
|
-
TokenOutput calldata output,
|
|
168
|
-
LimitOrderData calldata limit
|
|
169
|
-
)
|
|
170
|
-
external
|
|
171
|
-
returns (
|
|
172
|
-
uint256 netTokenOut,
|
|
173
|
-
uint256 netPtFromRemove,
|
|
174
|
-
uint256 netSyFromRemove,
|
|
175
|
-
uint256 netPyRedeem,
|
|
176
|
-
uint256 netSyFromRedeem,
|
|
177
|
-
uint256 netPtSwap,
|
|
178
|
-
uint256 netYtSwap,
|
|
179
|
-
uint256 netSyFromSwap,
|
|
180
|
-
uint256 netSyFee
|
|
181
|
-
)
|
|
182
|
-
{
|
|
183
|
-
(
|
|
184
|
-
netTokenOut,
|
|
185
|
-
netPtFromRemove,
|
|
186
|
-
netSyFromRemove,
|
|
187
|
-
netPyRedeem,
|
|
188
|
-
netSyFromRedeem,
|
|
189
|
-
netPtSwap,
|
|
190
|
-
netYtSwap,
|
|
191
|
-
netSyFromSwap,
|
|
192
|
-
netSyFee
|
|
193
|
-
) = exitMultiplePreExpiryInner(receiver, market, netPtIn, netYtIn, netLpIn, output, limit);
|
|
194
|
-
|
|
195
|
-
emit ExitMultiplePreExpiry(
|
|
196
|
-
msg.sender,
|
|
197
|
-
market,
|
|
198
|
-
output.tokenOut,
|
|
199
|
-
receiver,
|
|
200
|
-
netLpIn,
|
|
201
|
-
netPtFromRemove,
|
|
202
|
-
netSyFromRemove,
|
|
203
|
-
netPyRedeem,
|
|
204
|
-
netSyFromRedeem,
|
|
205
|
-
netPtSwap,
|
|
206
|
-
netYtSwap,
|
|
207
|
-
netSyFromSwap,
|
|
208
|
-
netSyFee,
|
|
209
|
-
netTokenOut
|
|
210
|
-
);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
function exitMultiplePreExpiryInner(
|
|
214
|
-
address receiver,
|
|
215
|
-
address market,
|
|
216
|
-
uint256 netPtIn,
|
|
217
|
-
uint256 netYtIn,
|
|
218
|
-
uint256 netLpIn,
|
|
219
|
-
TokenOutput calldata output,
|
|
220
|
-
LimitOrderData calldata limit
|
|
221
|
-
)
|
|
222
|
-
internal
|
|
223
|
-
returns (
|
|
224
|
-
uint256 netTokenOut,
|
|
225
|
-
uint256 netPtFromRemove,
|
|
226
|
-
uint256 netSyFromRemove,
|
|
227
|
-
uint256 netPyRedeem,
|
|
228
|
-
uint256 netSyFromRedeem,
|
|
229
|
-
uint256 netPtSwap,
|
|
230
|
-
uint256 netYtSwap,
|
|
231
|
-
uint256 netSyFromSwap,
|
|
232
|
-
uint256 netSyFee
|
|
233
|
-
)
|
|
234
|
-
{
|
|
235
|
-
// (IStandardizedYield SY, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
|
|
236
|
-
// if (netLpIn > 0) {
|
|
237
|
-
// _transferFrom(IERC20(market), msg.sender, market, netLpIn);
|
|
238
|
-
// (netSyFromRemove, netPtFromRemove) = IPMarket(market).burn(address(SY), address(this), netLpIn);
|
|
239
|
-
// }
|
|
240
|
-
// if (netPtIn > 0) {
|
|
241
|
-
// _transferIn(address(PT), address(this), netPtIn);
|
|
242
|
-
// }
|
|
243
|
-
// netPyRedeem = PMath.min(netPtFromRemove + netPtIn, netYtIn);
|
|
244
|
-
// if (netPyRedeem > 0) {
|
|
245
|
-
// _transferOut(address(PT), address(YT), netPyRedeem);
|
|
246
|
-
// _transferFrom(YT, msg.sender, address(YT), netPyRedeem);
|
|
247
|
-
// netSyFromRedeem = IPYieldToken(YT).redeemPY(address(SY));
|
|
248
|
-
// }
|
|
249
|
-
// netPtSwap = netPtFromRemove + netPtIn - netPyRedeem;
|
|
250
|
-
// netYtSwap = netYtIn - netPyRedeem;
|
|
251
|
-
// if (netPtSwap > 0) {
|
|
252
|
-
// address ptEntry = _entry_swapExactPtForSy(market, limit);
|
|
253
|
-
// if (ptEntry != address(this)) _transferOut(address(PT), ptEntry, netPtSwap);
|
|
254
|
-
// (netSyFromSwap, netSyFee) = _swapExactPtForSy(address(SY), market, netPtSwap, 0, limit);
|
|
255
|
-
// } else if (netYtSwap > 0) {
|
|
256
|
-
// _transferFrom(YT, msg.sender, _entry_swapExactYtForSy(YT, limit), netYtSwap);
|
|
257
|
-
// (netSyFromSwap, netSyFee) = _swapExactYtForSy(address(SY), market, SY, YT, netYtSwap, 0, limit);
|
|
258
|
-
// }
|
|
259
|
-
// uint256 netSyRedeem = netSyFromRemove + netSyFromRedeem + netSyFromSwap;
|
|
260
|
-
// netTokenOut = _redeemSyToToken(receiver, address(SY), netSyRedeem, output, false);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
// TODO: is netSyInterm necessary? can we return more?
|
|
264
|
-
// TODO: compare interface against existing functions, to see if it makes sense
|
|
265
|
-
function exitMultiplePostExpiry(
|
|
266
|
-
address receiver,
|
|
267
|
-
address market,
|
|
268
|
-
uint256 netPtIn,
|
|
269
|
-
uint256 netLpIn,
|
|
270
|
-
TokenOutput calldata output
|
|
271
|
-
)
|
|
272
|
-
external
|
|
273
|
-
returns (
|
|
274
|
-
uint256 netTokenOut,
|
|
275
|
-
uint256 netPtFromRemove,
|
|
276
|
-
uint256 netSyFromRemove,
|
|
277
|
-
uint256 netPtRedeem,
|
|
278
|
-
uint256 netSyFromRedeem
|
|
279
|
-
)
|
|
280
|
-
{
|
|
281
|
-
// * (done) maybe shouldn't reuse functions because of conflicting events
|
|
282
|
-
// * (KIV) expose all inner workings variables
|
|
283
|
-
// also: should match events with existing events
|
|
284
|
-
// events, no matter what is emitted, can be parsed dynamically on BE. Say if only PT is exited, it can be parsed
|
|
285
|
-
// as swapExact
|
|
286
|
-
|
|
287
|
-
(IStandardizedYield SY, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
|
|
288
|
-
|
|
289
|
-
// uint256 netPtFromRemove;
|
|
290
|
-
// uint256 netSyFromRemove;
|
|
291
|
-
|
|
292
|
-
if (netLpIn > 0) {
|
|
293
|
-
_transferFrom(IERC20(market), msg.sender, market, netLpIn);
|
|
294
|
-
(netSyFromRemove, netPtFromRemove) = IPMarket(market).burn(address(SY), address(YT), netLpIn);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
if (netPtIn > 0) {
|
|
298
|
-
_transferFrom(PT, msg.sender, address(YT), netPtIn);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
netPtRedeem = netPtFromRemove + netPtIn;
|
|
302
|
-
netSyFromRedeem = IPYieldToken(YT).redeemPY(address(SY));
|
|
303
|
-
|
|
304
|
-
uint256 netSyRedeem = netSyFromRemove + netSyFromRedeem;
|
|
305
|
-
netTokenOut = _redeemSyToToken(receiver, address(SY), netSyRedeem, output, false);
|
|
306
|
-
|
|
307
|
-
emit ExitMultiplePostExpiry(
|
|
308
|
-
msg.sender,
|
|
309
|
-
market,
|
|
310
|
-
output.tokenOut,
|
|
311
|
-
receiver,
|
|
312
|
-
netLpIn,
|
|
313
|
-
netPtFromRemove,
|
|
314
|
-
netSyFromRemove,
|
|
315
|
-
netPtRedeem,
|
|
316
|
-
netSyFromRedeem,
|
|
317
|
-
netTokenOut
|
|
318
|
-
);
|
|
319
|
-
}
|
|
320
|
-
|
|
321
121
|
// ----------------- MISC FUNCTIONS -----------------
|
|
322
122
|
|
|
323
123
|
function boostMarkets(address[] memory markets) external {
|
|
324
|
-
for (uint256 i = 0; i < markets.length;
|
|
124
|
+
for (uint256 i = 0; i < markets.length; ) {
|
|
325
125
|
IPMarket(markets[i]).transferFrom(msg.sender, markets[i], 0);
|
|
126
|
+
unchecked {
|
|
127
|
+
i++;
|
|
128
|
+
}
|
|
326
129
|
}
|
|
327
130
|
}
|
|
328
131
|
|
|
329
132
|
function multicall(Call3[] calldata calls) external payable returns (Result[] memory res) {
|
|
330
133
|
uint256 length = calls.length;
|
|
331
134
|
res = new Result[](length);
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
135
|
+
Call3 calldata call;
|
|
136
|
+
for (uint256 i = 0; i < length; ) {
|
|
137
|
+
call = calls[i];
|
|
138
|
+
|
|
139
|
+
// delegatecall to itself, it turns allowing invoking functions from other actions
|
|
140
|
+
(bool success, bytes memory result) = address(this).delegatecall(call.callData);
|
|
141
|
+
|
|
142
|
+
if (!success && !call.allowFailure) {
|
|
143
|
+
assembly {
|
|
144
|
+
// We use Yul's revert() to bubble up errors from the target contract.
|
|
145
|
+
revert(add(32, result), mload(result))
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
res[i].success = success;
|
|
150
|
+
res[i].returnData = result;
|
|
151
|
+
|
|
152
|
+
unchecked {
|
|
153
|
+
++i;
|
|
154
|
+
}
|
|
335
155
|
}
|
|
336
156
|
}
|
|
337
157
|
|
|
@@ -52,6 +52,51 @@ contract ActionSwapYTV3 is CallbackHelper, IPActionSwapYTV3, ActionBase {
|
|
|
52
52
|
emit SwapYtAndSy(msg.sender, market, receiver, netYtOut.Int(), exactSyIn.neg());
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
function _entry_swapExactSyForYt(IPYieldToken YT, LimitOrderData calldata limit) internal view returns (address) {
|
|
56
|
+
return !_isEmptyLimit(limit) ? address(this) : address(YT);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function _swapExactSyForYt(
|
|
60
|
+
address receiver,
|
|
61
|
+
address market,
|
|
62
|
+
IStandardizedYield SY,
|
|
63
|
+
IPYieldToken YT,
|
|
64
|
+
uint256 exactSyIn,
|
|
65
|
+
uint256 minYtOut,
|
|
66
|
+
ApproxParams calldata guessYtOut,
|
|
67
|
+
LimitOrderData calldata limit
|
|
68
|
+
) internal returns (uint256 netYtOut, uint256 netSyFee) {
|
|
69
|
+
uint256 netSyLeft = exactSyIn;
|
|
70
|
+
bool doMarketOrder = true;
|
|
71
|
+
|
|
72
|
+
if (!_isEmptyLimit(limit)) {
|
|
73
|
+
(netSyLeft, netYtOut, netSyFee, doMarketOrder) = _fillLimit(receiver, SY, netSyLeft, limit);
|
|
74
|
+
if (doMarketOrder) {
|
|
75
|
+
_transferOut(address(SY), address(YT), netSyLeft);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (doMarketOrder) {
|
|
80
|
+
(uint256 netYtOutMarket, ) = _readMarket(market).approxSwapExactSyForYt(
|
|
81
|
+
YT.newIndex(),
|
|
82
|
+
netSyLeft,
|
|
83
|
+
block.timestamp,
|
|
84
|
+
guessYtOut
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
(, uint256 netSyFeeMarket) = IPMarket(market).swapExactPtForSy(
|
|
88
|
+
address(YT),
|
|
89
|
+
netYtOutMarket, // exactPtIn = netYtOut
|
|
90
|
+
_encodeSwapExactSyForYt(receiver, YT)
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
netYtOut += netYtOutMarket;
|
|
94
|
+
netSyFee += netSyFeeMarket;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (netYtOut < minYtOut) revert("Slippage: INSUFFICIENT_YT_OUT");
|
|
98
|
+
}
|
|
99
|
+
|
|
55
100
|
// ------------------ SWAP TOKEN FOR TOKEN ------------------
|
|
56
101
|
|
|
57
102
|
function swapExactYtForToken(
|
|
@@ -93,6 +138,46 @@ contract ActionSwapYTV3 is CallbackHelper, IPActionSwapYTV3, ActionBase {
|
|
|
93
138
|
emit SwapYtAndSy(msg.sender, market, receiver, exactYtIn.neg(), netSyOut.Int());
|
|
94
139
|
}
|
|
95
140
|
|
|
141
|
+
function _entry_swapExactYtForSy(IPYieldToken YT, LimitOrderData calldata limit) internal view returns (address) {
|
|
142
|
+
return !_isEmptyLimit(limit) ? address(this) : address(YT);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function _swapExactYtForSy(
|
|
146
|
+
address receiver,
|
|
147
|
+
address market,
|
|
148
|
+
IStandardizedYield SY,
|
|
149
|
+
IPYieldToken YT,
|
|
150
|
+
uint256 exactYtIn,
|
|
151
|
+
uint256 minSyOut,
|
|
152
|
+
LimitOrderData calldata limit
|
|
153
|
+
) internal returns (uint256 netSyOut, uint256 netSyFee) {
|
|
154
|
+
uint256 netYtLeft = exactYtIn;
|
|
155
|
+
bool doMarketOrder = true;
|
|
156
|
+
|
|
157
|
+
if (!_isEmptyLimit(limit)) {
|
|
158
|
+
(netYtLeft, netSyOut, netSyFee, doMarketOrder) = _fillLimit(receiver, YT, netYtLeft, limit);
|
|
159
|
+
if (doMarketOrder) {
|
|
160
|
+
_transferOut(address(YT), address(YT), netYtLeft);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (doMarketOrder) {
|
|
165
|
+
uint256 preSyBalance = SY.balanceOf(receiver);
|
|
166
|
+
|
|
167
|
+
(, uint256 netSyFeeMarket) = IPMarket(market).swapSyForExactPt(
|
|
168
|
+
address(YT),
|
|
169
|
+
netYtLeft, // exactPtOut = netYtLeft
|
|
170
|
+
_encodeSwapYtForSy(receiver, YT)
|
|
171
|
+
);
|
|
172
|
+
|
|
173
|
+
// avoid stack issue
|
|
174
|
+
netSyFee += netSyFeeMarket;
|
|
175
|
+
netSyOut += SY.balanceOf(receiver) - preSyBalance;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (netSyOut < minSyOut) revert("Slippage: INSUFFICIENT_SY_OUT");
|
|
179
|
+
}
|
|
180
|
+
|
|
96
181
|
// ------------------ SWAP PT FOR YT ------------------
|
|
97
182
|
|
|
98
183
|
function swapExactPtForYt(
|
|
@@ -10,10 +10,8 @@ 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";
|
|
14
13
|
|
|
15
|
-
abstract contract ActionBase is TokenHelper,
|
|
16
|
-
using MarketApproxPtInLib for MarketState;
|
|
14
|
+
abstract contract ActionBase is TokenHelper, IPLimitOrderType {
|
|
17
15
|
using MarketApproxPtOutLib for MarketState;
|
|
18
16
|
using PMath for uint256;
|
|
19
17
|
using PYIndexLib for IPYieldToken;
|
|
@@ -238,93 +236,6 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
238
236
|
if (netPtOut < minPtOut) revert("Slippage: INSUFFICIENT_PT_OUT");
|
|
239
237
|
}
|
|
240
238
|
|
|
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
|
-
|
|
328
239
|
// ----------------- LIMIT ORDERS -----------------
|
|
329
240
|
function _fillLimit(
|
|
330
241
|
address receiver,
|
|
@@ -373,20 +284,4 @@ abstract contract ActionBase is TokenHelper, CallbackHelper, IPLimitOrderType {
|
|
|
373
284
|
function _isEmptyLimit(LimitOrderData calldata a) internal pure returns (bool) {
|
|
374
285
|
return a.normalFills.length == 0 && a.flashFills.length == 0;
|
|
375
286
|
}
|
|
376
|
-
|
|
377
|
-
// ----------------- DELEGATE CALL -----------------
|
|
378
|
-
|
|
379
|
-
function _delegateToSelf(
|
|
380
|
-
bytes memory data,
|
|
381
|
-
bool allowFailure
|
|
382
|
-
) internal returns (bool success, bytes memory result) {
|
|
383
|
-
(success, result) = address(this).delegatecall(data);
|
|
384
|
-
|
|
385
|
-
if (!success && !allowFailure) {
|
|
386
|
-
assembly {
|
|
387
|
-
// We use Yul's revert() to bubble up errors from the target contract.
|
|
388
|
-
revert(add(32, result), mload(result))
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
287
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY ezETH",
|
|
3
|
+
"SY": "0x22E12A50e3ca49FB183074235cB1db84Fe4C716D",
|
|
4
|
+
"YT": "0x1623F1A991584A6b69baBbdbffD26E2B46485465",
|
|
5
|
+
"PT": "0x248241244356D18f63d0c16082996839ecB0C7bF",
|
|
6
|
+
"market": "0xcDBD5ff3E03b6828Db9C32e2131A60ABA5137901",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "7728447732000000000",
|
|
9
|
+
"initAnchor": "1116672357000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000"
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY pufETH",
|
|
3
|
+
"SY": "0x253008ba4aE2f3E6488DC998a5321D4EB1a0c905",
|
|
4
|
+
"YT": "0x1a65eB80a2ac3ea6E41D456DdD6E9cC5728BEf7C",
|
|
5
|
+
"PT": "0xd4e75971eAF78a8d93D96df530f1FFf5f9F53288",
|
|
6
|
+
"market": "0xA54FC268101c8b97DE19eF3141d34751a11996B2",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "7770558179000000000",
|
|
9
|
+
"initAnchor": "1110275954000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000"
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY rsETH",
|
|
3
|
+
"SY": "0x730A5E2AcEbccAA5e9095723B3CB862739DA793c",
|
|
4
|
+
"YT": "0xE653E4048620E546AFff02D3689678896d22e236",
|
|
5
|
+
"PT": "0x7bAf258049cc8B9A78097723dc19a8b103D4098F",
|
|
6
|
+
"market": "0x6b4740722e46048874d84306B2877600ABCea3Ae",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "7770558179000000000",
|
|
9
|
+
"initAnchor": "1110275954000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000"
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY rswETH",
|
|
3
|
+
"SY": "0x4f3A7a07A968B67F1f9692b70242f10E665d38Ad",
|
|
4
|
+
"YT": "0xf0E4244Ca93Ac36752DA5939Afd9CB73B0637b06",
|
|
5
|
+
"PT": "0x0a0E172511114456EC63A85FF32E45C5e0E27D63",
|
|
6
|
+
"market": "0x1e0c2e41f3165ff6B8a660092f63E10BC0EebE26",
|
|
7
|
+
"expiry": 1721865600,
|
|
8
|
+
"scalarRoot": "8113474588000000000",
|
|
9
|
+
"initAnchor": "1061316437000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000"
|
|
11
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SUSDE-MAINNET-SEP2024",
|
|
3
|
+
"SY": "0x4139cDC6345aFFbaC0692b43bed4D059Df3e6d65",
|
|
4
|
+
"YT": "0xdc02b77a3986da62C7A78FED73949C9767850809",
|
|
5
|
+
"PT": "0x6c9f097e044506712B58EAC670c9a5fd4BCceF13",
|
|
6
|
+
"market": "0xd1D7D99764f8a52Aff007b7831cc02748b2013b5",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"lnFeeRateRoot": "2995508979000000",
|
|
9
|
+
"scalarRoot": "8580934398000000000",
|
|
10
|
+
"initAnchor": "1120006408000000000",
|
|
11
|
+
"doCacheIndexSameBlock": true,
|
|
12
|
+
"deployTxHash": "0x467c0c15148778d0b99a1d9f3bd7406fd0c58d8a6e3284a57a50e55ae0160165"
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY weETH",
|
|
3
|
+
"SY": "0xAC0047886a985071476a1186bE89222659970d65",
|
|
4
|
+
"YT": "0xA54Df645A042D24121a737dAA89a57EbF8E0b71c",
|
|
5
|
+
"PT": "0x1c085195437738d73d75DC64bC5A3E098b7f93b1",
|
|
6
|
+
"market": "0xC8eDd52D0502Aa8b4D5C77361D4B3D300e8fC81c",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "7728447732000000000",
|
|
9
|
+
"initAnchor": "1116672357000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000"
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY ezETH",
|
|
3
|
+
"SY": "0x0dE802e3D6Cc9145A150bBDc8da9F988a98c5202",
|
|
4
|
+
"YT": "0xE58AfaA6E2abF9A9F243D5A55Bd5447628c4D811",
|
|
5
|
+
"PT": "0x2CCFce9bE49465CC6f947b5F6aC9383673733Da9",
|
|
6
|
+
"market": "0x35f3dB08a6e9cB4391348b0B404F493E7ae264c0",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "7728447732000000000",
|
|
9
|
+
"initAnchor": "1116672357000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000"
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY rsETH",
|
|
3
|
+
"SY": "0xf176fB51F4eB826136a54FDc71C50fCd2202E272",
|
|
4
|
+
"YT": "0x2FDc424946AA72D42E2F897447d7c335E64845F0",
|
|
5
|
+
"PT": "0x30c98c0139B62290E26aC2a2158AC341Dcaf1333",
|
|
6
|
+
"market": "0x1d38d4204159aA5e767aFbA8f76BE22117De61E5",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "7770558179000000000",
|
|
9
|
+
"initAnchor": "1110275954000000000",
|
|
10
|
+
"lnFeeRateRoot": "29999550000000"
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY sETH-pteETHSilo",
|
|
3
|
+
"SY": "0xd0c4351a18F40b96b6446Da3A191496DF36d60F9",
|
|
4
|
+
"YT": "0x7Cfb81E9c9402D48c6F3161204a21800b210BAeA",
|
|
5
|
+
"PT": "0x2D5405688f253D741a9F1090DD90D8A285CF5C79",
|
|
6
|
+
"market": "0x6aBE9Ac2df48490693BdB9d66Fa898fc9cD7cc36",
|
|
7
|
+
"expiry": 1719446400,
|
|
8
|
+
"scalarRoot": "10324763686000000000",
|
|
9
|
+
"initAnchor": "1041846750000000000",
|
|
10
|
+
"lnFeeRateRoot": "499875041000000"
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY sETH-ptezETHSilo",
|
|
3
|
+
"SY": "0x8242F81F7B06C1e67bC80DFD2B2716f58bD46651",
|
|
4
|
+
"YT": "0x8138E8cAC470Dc963437b055834B54D56d6d6a29",
|
|
5
|
+
"PT": "0xd7e810aEd2988B8A7eA0187d55C939110b178521",
|
|
6
|
+
"market": "0xCf602767e9c82194DaF58EB67a3169d60DbAaC62",
|
|
7
|
+
"expiry": 1719446400,
|
|
8
|
+
"scalarRoot": "10324763686000000000",
|
|
9
|
+
"initAnchor": "1041846750000000000",
|
|
10
|
+
"lnFeeRateRoot": "499875041000000"
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY weETH",
|
|
3
|
+
"SY": "0xa6C895EB332E91c5b3D00B7baeEAae478cc502DA",
|
|
4
|
+
"YT": "0xfB2A7AC0372C2425c273932f8d438518402A873E",
|
|
5
|
+
"PT": "0xb8b0a120F6A68Dd06209619F62429fB1a8e92feC",
|
|
6
|
+
"market": "0xf9F9779d8fF604732EBA9AD345E6A27EF5c2a9d6",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "7728447732000000000",
|
|
9
|
+
"initAnchor": "1116672357000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000"
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SY weETH",
|
|
3
|
+
"SY": "0x56b70AC3a6Ae850F6AEE67591d1bB86895Ba211E",
|
|
4
|
+
"YT": "0xBf1E6E67cE2Bd8da1ea7342354126b59B46d4000",
|
|
5
|
+
"PT": "0x0E8Ba474FCB6581059C61c328a21CFa285C7Cee7",
|
|
6
|
+
"market": "0x27255F9aFF1868A8eFB1182471F4De2121946Fd0",
|
|
7
|
+
"expiry": 1727308800,
|
|
8
|
+
"scalarRoot": "7728447732000000000",
|
|
9
|
+
"initAnchor": "1116672357000000000",
|
|
10
|
+
"lnFeeRateRoot": "2995508979000000"
|
|
11
|
+
}
|
package/package.json
CHANGED