Skip to content

Commit

Permalink
Feat/eth support 2 (#160)
Browse files Browse the repository at this point in the history
* Revert swap utils (#152)

* Add USING_ETH workflow + fix eth test cases (#154)

---------

Co-authored-by: clemlak <[email protected]>
Co-authored-by: Clément Lakhal <[email protected]>
  • Loading branch information
3 people authored Oct 23, 2024
1 parent d12bc45 commit 2cf7329
Show file tree
Hide file tree
Showing 12 changed files with 769 additions and 632 deletions.
31 changes: 27 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,18 +42,41 @@ jobs:
forge test -vvv --via-ir
id: test0

- name: Run forge tests isToken0 (true) fee (300) protocolFee (0)
- name: Run forge tests isToken0 (true) fee (30) protocolFee (0)
run: |
export IS_TOKEN_0=TRUE
export FEE=300
export FEE=30
forge test -vvv --via-ir
id: test1

- name: Run forge tests isToken0 (true) fee (300) protocolFee (50)
- name: Run forge tests isToken0 (true) fee (30) protocolFee (50)
run: |
export IS_TOKEN_0=TRUE
export FEE=300
export FEE=30
export PROTOCOL_FEE=50
forge test -vvv --via-ir
id: test2

- name: Run forge tests with usingEth (true)
run: |
export USING_ETH=TRUE
export FEE=0
export PROTOCOL_FEE=0
forge test -vvv --via-ir
id: test3

- name: Run forge tests with usingEth (true) fee (30) protocolFee (0)
run: |
export USING_ETH=TRUE
export FEE=30
export PROTOCOL_FEE=0
forge test -vvv --via-ir
id: test4

- name: Run forge tests with usingEth (true) fee (30) protocolFee (50)
run: |
export USING_ETH=TRUE
export FEE=30
export PROTOCOL_FEE=50
forge test -vvv --via-ir
id: test5
33 changes: 17 additions & 16 deletions src/Doppler.sol
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ contract Doppler is BaseHook {
bool immutable isToken0; // whether token0 is the token being sold (true) or token1 (false)
uint256 immutable numPDSlugs; // number of price discovery slugs

receive() external payable {}

constructor(
IPoolManager _poolManager,
PoolKey memory _poolKey,
Expand Down Expand Up @@ -216,11 +218,13 @@ contract Doppler is BaseHook {
for (uint256 i; i < numPDSlugs + 1; ++i) {
delete positions[bytes32(uint256(2 + i))];
}
} else {
revert InvalidSwapAfterMaturitySufficientProceeds();
}
}

if (block.timestamp > endingTime && !insufficientProceeds) {
revert InvalidSwapAfterMaturitySufficientProceeds();
}

if (!insufficientProceeds) {
_rebalance(key);
} else if (isToken0) {
Expand All @@ -230,7 +234,7 @@ contract Doppler is BaseHook {
}
} else {
if (swapParams.zeroForOne == true) {
revert InvalidSwapAfterMaturitySufficientProceeds();
revert InvalidSwapAfterMaturityInsufficientProceeds();
}
}

Expand Down Expand Up @@ -427,7 +431,8 @@ contract Doppler is BaseHook {

SlugData memory lowerSlug =
_computeLowerSlugData(key, requiredProceeds, numeraireAvailable, totalTokensSold_, tickLower, currentTick);
(SlugData memory upperSlug, uint256 assetRemaining) = _computeUpperSlugData(key, totalTokensSold_, currentTick, assetAvailable);
(SlugData memory upperSlug, uint256 assetRemaining) =
_computeUpperSlugData(key, totalTokensSold_, currentTick, assetAvailable);
SlugData[] memory priceDiscoverySlugs =
_computePriceDiscoverySlugsData(key, upperSlug, tickUpper, assetRemaining);

Expand Down Expand Up @@ -726,8 +731,8 @@ contract Doppler is BaseHook {
(BalanceDelta positionDeltas, BalanceDelta feesAccrued) = poolManager.modifyLiquidity(
key,
IPoolManager.ModifyLiquidityParams({
tickLower: lastEpochPositions[i].tickLower,
tickUpper: lastEpochPositions[i].tickUpper,
tickLower: isToken0 ? lastEpochPositions[i].tickLower : lastEpochPositions[i].tickUpper,
tickUpper: isToken0 ? lastEpochPositions[i].tickUpper : lastEpochPositions[i].tickLower,
liquidityDelta: -int128(lastEpochPositions[i].liquidity),
salt: bytes32(uint256(lastEpochPositions[i].salt))
}),
Expand Down Expand Up @@ -763,12 +768,8 @@ contract Doppler is BaseHook {
poolManager.modifyLiquidity(
key,
IPoolManager.ModifyLiquidityParams({
tickLower: newPositions[i].tickLower < newPositions[i].tickUpper
? newPositions[i].tickLower
: newPositions[i].tickUpper,
tickUpper: newPositions[i].tickUpper > newPositions[i].tickLower
? newPositions[i].tickUpper
: newPositions[i].tickLower,
tickLower: isToken0 ? newPositions[i].tickLower : newPositions[i].tickUpper,
tickUpper: isToken0 ? newPositions[i].tickUpper : newPositions[i].tickLower,
liquidityDelta: int128(newPositions[i].liquidity),
salt: bytes32(uint256(newPositions[i].salt))
}),
Expand Down Expand Up @@ -824,8 +825,8 @@ contract Doppler is BaseHook {
(BalanceDelta callerDelta,) = poolManager.modifyLiquidity(
key,
IPoolManager.ModifyLiquidityParams({
tickLower: upperSlug.tickLower,
tickUpper: upperSlug.tickUpper,
tickLower: isToken0 ? upperSlug.tickLower : upperSlug.tickUpper,
tickUpper: isToken0 ? upperSlug.tickUpper : upperSlug.tickLower,
liquidityDelta: int128(upperSlug.liquidity),
salt: UPPER_SLUG_SALT
}),
Expand All @@ -839,8 +840,8 @@ contract Doppler is BaseHook {
(BalanceDelta callerDelta,) = poolManager.modifyLiquidity(
key,
IPoolManager.ModifyLiquidityParams({
tickLower: priceDiscoverySlugs[i].tickLower,
tickUpper: priceDiscoverySlugs[i].tickUpper,
tickLower: isToken0 ? priceDiscoverySlugs[i].tickLower : priceDiscoverySlugs[i].tickUpper,
tickUpper: isToken0 ? priceDiscoverySlugs[i].tickUpper : priceDiscoverySlugs[i].tickLower,
liquidityDelta: int128(priceDiscoverySlugs[i].liquidity),
salt: bytes32(uint256(3 + i))
}),
Expand Down
Loading

0 comments on commit 2cf7329

Please sign in to comment.