Skip to content

Commit 622ecba

Browse files
committed
run forge fmt
1 parent 01f0a8b commit 622ecba

2 files changed

Lines changed: 69 additions & 41 deletions

File tree

script/scenarios/JITpilotRebalanceScenario.s.sol

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ contract JITpilotRebalanceScenario is DeployScenario {
5757

5858
// Get a quote for the current price of ETH in the EulerSwap instance
5959
uint256 startingEthPrice = 2865e18;
60-
uint256 ethPriceInUSDC = eulerSwapPeriphery.quoteExactOutput(eulerSwap, address(assetUSDC), address(assetWETH), 1e18);
60+
uint256 ethPriceInUSDC =
61+
eulerSwapPeriphery.quoteExactOutput(eulerSwap, address(assetUSDC), address(assetWETH), 1e18);
6162
console.log("Starting price of ETH: ", startingEthPrice);
6263
console.log("New price of ETH: ", ethPriceInUSDC);
6364

@@ -88,13 +89,19 @@ contract JITpilotRebalanceScenario is DeployScenario {
8889

8990
// Let's buy some WETH on the EulerSwap pool and see the effect on the debt
9091
// sell USDC so that user2's EulerSwap position has to borrow USDC
91-
uint256 newEthPrice = eulerSwapPeriphery.quoteExactOutput(eulerSwap, address(assetUSDC), address(assetWETH), 1e18);
92+
uint256 newEthPrice =
93+
eulerSwapPeriphery.quoteExactOutput(eulerSwap, address(assetUSDC), address(assetWETH), 1e18);
9294
console.log("price of ETH (market): ", ethPriceInUSDC);
9395
console.log("price of ETH (EulerSwap): ", newEthPrice);
9496
amountIn = 101_000_000e6;
9597
amountOut = _swapExactIn(address(assetUSDC), address(assetWETH), amountIn, user0, user0PK);
96-
console.log("marketUser BOUGHT %s WETH FOR %s USDC (price: %s)", amountOut, amountIn, amountIn * 1e18 / amountOut);
97-
console.log("price of ETH (EulerSwap, after arbitrage): ", eulerSwapPeriphery.quoteExactOutput(eulerSwap, address(assetUSDC), address(assetWETH), 1e18));
98+
console.log(
99+
"marketUser BOUGHT %s WETH FOR %s USDC (price: %s)", amountOut, amountIn, amountIn * 1e18 / amountOut
100+
);
101+
console.log(
102+
"price of ETH (EulerSwap, after arbitrage): ",
103+
eulerSwapPeriphery.quoteExactOutput(eulerSwap, address(assetUSDC), address(assetWETH), 1e18)
104+
);
98105

99106
// Let's see the new state of the EulerSwap pool after arbitrage
100107
console.log("EulerSwap state now (after arbitrage):");
@@ -126,7 +133,6 @@ contract JITpilotRebalanceScenario is DeployScenario {
126133
}
127134

128135
function deployEulerSwap(IEulerSwap.Params memory poolParams, bool rebalancing) internal {
129-
130136
console.log("DEPLOYING EULERSWAP WITH PARAMS");
131137
printEulerSwapParams(poolParams);
132138

@@ -136,23 +142,44 @@ contract JITpilotRebalanceScenario is DeployScenario {
136142

137143
IEulerSwap.InitialState memory initialState;
138144
if (!rebalancing) {
139-
initialState = IEulerSwap.InitialState({currReserve0: poolParams.equilibriumReserve0, currReserve1: poolParams.equilibriumReserve1});
140-
} else {
145+
initialState = IEulerSwap.InitialState({
146+
currReserve0: poolParams.equilibriumReserve0,
147+
currReserve1: poolParams.equilibriumReserve1
148+
});
149+
} else {
141150
if (asset0IsDebt) {
142151
{
143-
uint256 deltaReservesAsset0 = poolParams.equilibriumReserve0 * 1/3;
152+
uint256 deltaReservesAsset0 = poolParams.equilibriumReserve0 * 1 / 3;
144153
// uint256 deltaReservesAsset1 = deltaReservesAsset0 * poolParams.priceX / poolParams.priceY;
145154
currentReserve0 = uint112(poolParams.equilibriumReserve0 - deltaReservesAsset0);
146155
// currentReserve1 = uint112(poolParams.equilibriumReserve1 + deltaReservesAsset1);
147-
currentReserve1 = uint112(CurveLib.f(uint256(currentReserve0), uint256(poolParams.priceX), uint256(poolParams.priceY), uint256(poolParams.equilibriumReserve0), uint256(poolParams.equilibriumReserve1), uint256(poolParams.concentrationX)));
156+
currentReserve1 = uint112(
157+
CurveLib.f(
158+
uint256(currentReserve0),
159+
uint256(poolParams.priceX),
160+
uint256(poolParams.priceY),
161+
uint256(poolParams.equilibriumReserve0),
162+
uint256(poolParams.equilibriumReserve1),
163+
uint256(poolParams.concentrationX)
164+
)
165+
);
148166
}
149167
} else {
150168
{
151-
uint256 deltaReservesAsset1 = poolParams.equilibriumReserve1 * 1/3;
169+
uint256 deltaReservesAsset1 = poolParams.equilibriumReserve1 * 1 / 3;
152170
// uint256 deltaReservesAsset0 = deltaReservesAsset1 * poolParams.priceY / poolParams.priceX;
153171
currentReserve1 = uint112(poolParams.equilibriumReserve1 - deltaReservesAsset1);
154172
// currentReserve0 = uint112(poolParams.equilibriumReserve0 + deltaReservesAsset0);
155-
currentReserve0 = uint112(CurveLib.fInverse(uint256(currentReserve1), uint256(poolParams.priceY), uint256(poolParams.priceX), uint256(poolParams.equilibriumReserve1), uint256(poolParams.equilibriumReserve0), uint256(poolParams.concentrationY)));
173+
currentReserve0 = uint112(
174+
CurveLib.fInverse(
175+
uint256(currentReserve1),
176+
uint256(poolParams.priceY),
177+
uint256(poolParams.priceX),
178+
uint256(poolParams.equilibriumReserve1),
179+
uint256(poolParams.equilibriumReserve0),
180+
uint256(poolParams.concentrationY)
181+
)
182+
);
156183
}
157184
}
158185
initialState = IEulerSwap.InitialState({currReserve0: currentReserve0, currReserve1: currentReserve1});
@@ -297,7 +324,6 @@ contract JITpilotRebalanceScenario is DeployScenario {
297324
}
298325

299326
function printEulerSwapData(address user) internal view {
300-
301327
JITpilot.BlockData memory blockData = jitPilot.getData(user);
302328
uint256 healthFactor = blockData.allowedLTV > 0 ? blockData.allowedLTV * 1e4 / blockData.currentLTV / 100 : 0;
303329

@@ -311,7 +337,7 @@ contract JITpilotRebalanceScenario is DeployScenario {
311337
console.log("controllerVault: ", blockData.controllerVault);
312338
console.log("==========================================================");
313339
}
314-
340+
315341
function getCurrentControllerVault(address lp) internal view returns (address) {
316342
address[] memory controllerVaults = evc.getControllers(lp);
317343
address currentControllerVault;

src/JITpilot.sol

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ contract JITpilot {
2727
// Constants
2828
uint256 private constant WINDOW_SIZE = 100;
2929
uint256 private constant PRECISION = 1e18;
30+
3031
enum RebalancingStatus {
3132
NOT_REBALANCING,
3233
REBALANCING
@@ -152,7 +153,6 @@ contract JITpilot {
152153
data.startBlock = block.number;
153154
data.rebalanceThreshold = _hfDesired;
154155
data.rebalanceDesired = _hfDesired;
155-
156156

157157
emit LPConfigured(lp, _hfMin, _hfDesired);
158158
}
@@ -298,13 +298,13 @@ contract JITpilot {
298298
function calculateRebalanceThreshold(address lp) internal view returns (uint256) {
299299
LPData storage data = lpData[lp];
300300
if (!data.initialized) return 0;
301-
301+
302302
// Placeholder implementation - to be researched and implemented
303303
// Should calculate threshold based on hfMin as main parameter
304304
// with thresholdSafetyMargin for fine-tuning
305305
return data.hfDesired; // Default hfDesired for now
306306
}
307-
307+
308308
/**
309309
* @dev Calculate dynamic rebalance desired target based on LP configuration (placeholder)
310310
* @param lp LP address
@@ -313,7 +313,7 @@ contract JITpilot {
313313
function calculateRebalanceDesired(address lp) internal view returns (uint256) {
314314
LPData storage data = lpData[lp];
315315
if (!data.initialized) return 0;
316-
316+
317317
// Placeholder implementation - to be researched and implemented
318318
// Should calculate target based on hfDesired and yieldTarget as main parameters
319319
// with desiredTargetRatio for fine-tuning
@@ -494,13 +494,19 @@ contract JITpilot {
494494
(uint256 collateralValueTotal, uint256 debtValue) = _getDepositValue(lp);
495495
uint256 depositValue = collateralValueTotal - debtValue;
496496

497-
uint256 asset0Scale = FixedPointMathLib.rpow(10e18, IERC20(IEVault(eulerSwapData.params.vault0).asset()).decimals(), 1e18) / 1e18;
498-
uint256 asset1Scale = FixedPointMathLib.rpow(10e18, IERC20(IEVault(eulerSwapData.params.vault1).asset()).decimals(), 1e18) / 1e18;
497+
uint256 asset0Scale =
498+
FixedPointMathLib.rpow(10e18, IERC20(IEVault(eulerSwapData.params.vault0).asset()).decimals(), 1e18) / 1e18;
499+
uint256 asset1Scale =
500+
FixedPointMathLib.rpow(10e18, IERC20(IEVault(eulerSwapData.params.vault1).asset()).decimals(), 1e18) / 1e18;
499501
uint256 asset0PriceUsd = IPriceOracle(IEVault(eulerSwapData.params.vault0).oracle()).getQuote(
500-
asset0Scale, IEVault(eulerSwapData.params.vault0).asset(), IEVault(eulerSwapData.params.vault0).unitOfAccount()
502+
asset0Scale,
503+
IEVault(eulerSwapData.params.vault0).asset(),
504+
IEVault(eulerSwapData.params.vault0).unitOfAccount()
501505
);
502506
uint256 asset1PriceUsd = IPriceOracle(IEVault(eulerSwapData.params.vault1).oracle()).getQuote(
503-
asset1Scale, IEVault(eulerSwapData.params.vault1).asset(), IEVault(eulerSwapData.params.vault1).unitOfAccount()
507+
asset1Scale,
508+
IEVault(eulerSwapData.params.vault1).asset(),
509+
IEVault(eulerSwapData.params.vault1).unitOfAccount()
504510
);
505511

506512
// Calculate balancedEquilibriumReserves given current depositValue
@@ -512,20 +518,18 @@ contract JITpilot {
512518
// we've chosen an arbitrary amount of 3x deltaReserves and a 99.3% concentration to prevent over-borrowing and allow for arbitrage
513519
desiredEqRsvDebtAsset = deltaReservesValueUsd * 3 * asset0Scale / asset0PriceUsd;
514520

515-
uint256 balEqRsv1 = depositValue * 1e4 / (1e4 - eulerSwapData.borrowLTV01) * asset1Scale / asset1PriceUsd;
516-
desiredEqRsvCollateralAsset = balEqRsv1
517-
+ depositValue * asset1Scale / 2 / asset1PriceUsd
518-
+ debtValue * asset1Scale / asset1PriceUsd
519-
- deltaReservesValueUsd * asset1Scale / asset1PriceUsd;
521+
uint256 balEqRsv1 =
522+
depositValue * 1e4 / (1e4 - eulerSwapData.borrowLTV01) * asset1Scale / asset1PriceUsd;
523+
desiredEqRsvCollateralAsset = balEqRsv1 + depositValue * asset1Scale / 2 / asset1PriceUsd
524+
+ debtValue * asset1Scale / asset1PriceUsd - deltaReservesValueUsd * asset1Scale / asset1PriceUsd;
520525
} else {
521526
// we've chosen an arbitrary amount of 3x deltaReserves and a 99% concentration to prevent over-borrowing and allow for arbitrage
522527
desiredEqRsvDebtAsset = deltaReservesValueUsd * 3 * asset1Scale / asset1PriceUsd;
523528

524-
uint256 balEqRsv0 = depositValue * 1e4 / (1e4 - eulerSwapData.borrowLTV01) * asset0Scale / asset0PriceUsd;
525-
desiredEqRsvCollateralAsset = balEqRsv0
526-
+ depositValue * asset0Scale / 2 / asset0PriceUsd
527-
+ debtValue * asset0Scale / asset0PriceUsd
528-
- deltaReservesValueUsd * asset0Scale / asset0PriceUsd;
529+
uint256 balEqRsv0 =
530+
depositValue * 1e4 / (1e4 - eulerSwapData.borrowLTV01) * asset0Scale / asset0PriceUsd;
531+
desiredEqRsvCollateralAsset = balEqRsv0 + depositValue * asset0Scale / 2 / asset0PriceUsd
532+
+ debtValue * asset0Scale / asset0PriceUsd - deltaReservesValueUsd * asset0Scale / asset0PriceUsd;
529533
}
530534
}
531535
uint256 concentrationDebtAsset = 99.3 * 1e16;
@@ -557,8 +561,7 @@ contract JITpilot {
557561
// $\Delta L = \frac{\frac{HF'}{LLTV} \cdot L - C}{\frac{HF'}{LLTV} - 1}$
558562
uint256 hfPrime = lpData[lp].hfDesired;
559563
address controllerVault = _getCurrentControllerVault(lp);
560-
address collateralVault =
561-
controllerVault == poolParams.vault0 ? poolParams.vault1 : poolParams.vault0;
564+
address collateralVault = controllerVault == poolParams.vault0 ? poolParams.vault1 : poolParams.vault0;
562565
uint256 lltv = uint256(IEVault(controllerVault).LTVLiquidation(collateralVault)) * 1e18 / 1e4;
563566

564567
uint256 collateralValue = _getPositionValue(lp, collateralVault, false);
@@ -673,7 +676,7 @@ contract JITpilot {
673676
function getRebalanceThreshold(address lp) external view returns (uint256) {
674677
return lpData[lp].rebalanceThreshold;
675678
}
676-
679+
677680
/**
678681
* @dev Get rebalance desired target for an LP
679682
* @param lp LP address
@@ -682,7 +685,7 @@ contract JITpilot {
682685
function getRebalanceDesired(address lp) external view returns (uint256) {
683686
return lpData[lp].rebalanceDesired;
684687
}
685-
688+
686689
/**
687690
* @dev Get all key metrics for an LP in one call
688691
* @param lp LP address
@@ -691,12 +694,11 @@ contract JITpilot {
691694
* @return desired Rebalance target
692695
* @return needsRebalance Whether LP currently needs rebalancing
693696
*/
694-
function getLPMetrics(address lp) external view returns (
695-
uint256 compositeScore,
696-
uint256 threshold,
697-
uint256 desired,
698-
bool needsRebalance
699-
) {
697+
function getLPMetrics(address lp)
698+
external
699+
view
700+
returns (uint256 compositeScore, uint256 threshold, uint256 desired, bool needsRebalance)
701+
{
700702
LPData storage data = lpData[lp];
701703
compositeScore = this.getCompositeScore(lp);
702704
threshold = data.rebalanceThreshold;

0 commit comments

Comments
 (0)