Skip to content

Commit a7cf038

Browse files
ccashwellgretzke
andauthored
fix(deps): resolve circular dependency that breaks clean builds (#964)
* fix(deps): resolve circular dependency that breaks clean builds Signed-off-by: Chris Cashwell <chris.cashwell@uniswap.org> * chore: update test suite Signed-off-by: Chris Cashwell <chris.cashwell@uniswap.org> * refactor: move structs from interface to top level Signed-off-by: Chris Cashwell <chris.cashwell@uniswap.org> --------- Signed-off-by: Chris Cashwell <chris.cashwell@uniswap.org> Co-authored-by: Daniel Gretzke <daniel@gretzke.de>
1 parent d9f8bfd commit a7cf038

33 files changed

+332
-378
lines changed

src/PoolManager.sol

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {IUnlockCallback} from "./interfaces/callback/IUnlockCallback.sol";
1616
import {ProtocolFees} from "./ProtocolFees.sol";
1717
import {ERC6909Claims} from "./ERC6909Claims.sol";
1818
import {PoolId} from "./types/PoolId.sol";
19+
import {ModifyLiquidityParams, SwapParams} from "./types/PoolOperation.sol";
1920
import {BalanceDelta, BalanceDeltaLibrary} from "./types/BalanceDelta.sol";
2021
import {BeforeSwapDelta} from "./types/BeforeSwapDelta.sol";
2122
import {Lock} from "./libraries/Lock.sol";
@@ -141,11 +142,12 @@ contract PoolManager is IPoolManager, ProtocolFees, NoDelegateCall, ERC6909Claim
141142
}
142143

143144
/// @inheritdoc IPoolManager
144-
function modifyLiquidity(
145-
PoolKey memory key,
146-
IPoolManager.ModifyLiquidityParams memory params,
147-
bytes calldata hookData
148-
) external onlyWhenUnlocked noDelegateCall returns (BalanceDelta callerDelta, BalanceDelta feesAccrued) {
145+
function modifyLiquidity(PoolKey memory key, ModifyLiquidityParams memory params, bytes calldata hookData)
146+
external
147+
onlyWhenUnlocked
148+
noDelegateCall
149+
returns (BalanceDelta callerDelta, BalanceDelta feesAccrued)
150+
{
149151
PoolId id = key.toId();
150152
{
151153
Pool.State storage pool = _getPool(id);
@@ -182,7 +184,7 @@ contract PoolManager is IPoolManager, ProtocolFees, NoDelegateCall, ERC6909Claim
182184
}
183185

184186
/// @inheritdoc IPoolManager
185-
function swap(PoolKey memory key, IPoolManager.SwapParams memory params, bytes calldata hookData)
187+
function swap(PoolKey memory key, SwapParams memory params, bytes calldata hookData)
186188
external
187189
onlyWhenUnlocked
188190
noDelegateCall

src/interfaces/IHooks.sol

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ pragma solidity ^0.8.0;
33

44
import {PoolKey} from "../types/PoolKey.sol";
55
import {BalanceDelta} from "../types/BalanceDelta.sol";
6-
import {IPoolManager} from "./IPoolManager.sol";
6+
import {ModifyLiquidityParams, SwapParams} from "../types/PoolOperation.sol";
77
import {BeforeSwapDelta} from "../types/BeforeSwapDelta.sol";
88

99
/// @notice V4 decides whether to invoke specific hooks by inspecting the least significant bits
@@ -39,7 +39,7 @@ interface IHooks {
3939
function beforeAddLiquidity(
4040
address sender,
4141
PoolKey calldata key,
42-
IPoolManager.ModifyLiquidityParams calldata params,
42+
ModifyLiquidityParams calldata params,
4343
bytes calldata hookData
4444
) external returns (bytes4);
4545

@@ -55,7 +55,7 @@ interface IHooks {
5555
function afterAddLiquidity(
5656
address sender,
5757
PoolKey calldata key,
58-
IPoolManager.ModifyLiquidityParams calldata params,
58+
ModifyLiquidityParams calldata params,
5959
BalanceDelta delta,
6060
BalanceDelta feesAccrued,
6161
bytes calldata hookData
@@ -70,7 +70,7 @@ interface IHooks {
7070
function beforeRemoveLiquidity(
7171
address sender,
7272
PoolKey calldata key,
73-
IPoolManager.ModifyLiquidityParams calldata params,
73+
ModifyLiquidityParams calldata params,
7474
bytes calldata hookData
7575
) external returns (bytes4);
7676

@@ -86,7 +86,7 @@ interface IHooks {
8686
function afterRemoveLiquidity(
8787
address sender,
8888
PoolKey calldata key,
89-
IPoolManager.ModifyLiquidityParams calldata params,
89+
ModifyLiquidityParams calldata params,
9090
BalanceDelta delta,
9191
BalanceDelta feesAccrued,
9292
bytes calldata hookData
@@ -100,12 +100,9 @@ interface IHooks {
100100
/// @return bytes4 The function selector for the hook
101101
/// @return BeforeSwapDelta The hook's delta in specified and unspecified currencies. Positive: the hook is owed/took currency, negative: the hook owes/sent currency
102102
/// @return uint24 Optionally override the lp fee, only used if three conditions are met: 1. the Pool has a dynamic fee, 2. the value's 2nd highest bit is set (23rd bit, 0x400000), and 3. the value is less than or equal to the maximum fee (1 million)
103-
function beforeSwap(
104-
address sender,
105-
PoolKey calldata key,
106-
IPoolManager.SwapParams calldata params,
107-
bytes calldata hookData
108-
) external returns (bytes4, BeforeSwapDelta, uint24);
103+
function beforeSwap(address sender, PoolKey calldata key, SwapParams calldata params, bytes calldata hookData)
104+
external
105+
returns (bytes4, BeforeSwapDelta, uint24);
109106

110107
/// @notice The hook called after a swap
111108
/// @param sender The initial msg.sender for the swap call
@@ -118,7 +115,7 @@ interface IHooks {
118115
function afterSwap(
119116
address sender,
120117
PoolKey calldata key,
121-
IPoolManager.SwapParams calldata params,
118+
SwapParams calldata params,
122119
BalanceDelta delta,
123120
bytes calldata hookData
124121
) external returns (bytes4, int128);

src/interfaces/IPoolManager.sol

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {BalanceDelta} from "../types/BalanceDelta.sol";
1010
import {PoolId} from "../types/PoolId.sol";
1111
import {IExtsload} from "./IExtsload.sol";
1212
import {IExttload} from "./IExttload.sol";
13+
import {ModifyLiquidityParams, SwapParams} from "../types/PoolOperation.sol";
1314

1415
/// @notice Interface for the PoolManager
1516
interface IPoolManager is IProtocolFees, IERC6909Claims, IExtsload, IExttload {
@@ -119,16 +120,6 @@ interface IPoolManager is IProtocolFees, IERC6909Claims, IExtsload, IExttload {
119120
/// @return tick The initial tick of the pool
120121
function initialize(PoolKey memory key, uint160 sqrtPriceX96) external returns (int24 tick);
121122

122-
struct ModifyLiquidityParams {
123-
// the lower and upper tick of the position
124-
int24 tickLower;
125-
int24 tickUpper;
126-
// how to modify the liquidity
127-
int256 liquidityDelta;
128-
// a value to set if you want unique liquidity positions at the same range
129-
bytes32 salt;
130-
}
131-
132123
/// @notice Modify the liquidity for the given pool
133124
/// @dev Poke by calling with a zero liquidityDelta
134125
/// @param key The pool to modify liquidity in
@@ -143,15 +134,6 @@ interface IPoolManager is IProtocolFees, IERC6909Claims, IExtsload, IExttload {
143134
external
144135
returns (BalanceDelta callerDelta, BalanceDelta feesAccrued);
145136

146-
struct SwapParams {
147-
/// Whether to swap token0 for token1 or vice versa
148-
bool zeroForOne;
149-
/// The desired input amount if negative (exactIn), or the desired output amount if positive (exactOut)
150-
int256 amountSpecified;
151-
/// The sqrt price at which, if reached, the swap will stop executing
152-
uint160 sqrtPriceLimitX96;
153-
}
154-
155137
/// @notice Swap against the given pool
156138
/// @param key The pool to swap in
157139
/// @param params The parameters for swapping

src/libraries/Hooks.sol

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {LPFeeLibrary} from "./LPFeeLibrary.sol";
88
import {BalanceDelta, toBalanceDelta, BalanceDeltaLibrary} from "../types/BalanceDelta.sol";
99
import {BeforeSwapDelta, BeforeSwapDeltaLibrary} from "../types/BeforeSwapDelta.sol";
1010
import {IPoolManager} from "../interfaces/IPoolManager.sol";
11+
import {ModifyLiquidityParams, SwapParams} from "../types/PoolOperation.sol";
1112
import {ParseBytes} from "./ParseBytes.sol";
1213
import {CustomRevert} from "./CustomRevert.sol";
1314

@@ -194,7 +195,7 @@ library Hooks {
194195
function beforeModifyLiquidity(
195196
IHooks self,
196197
PoolKey memory key,
197-
IPoolManager.ModifyLiquidityParams memory params,
198+
ModifyLiquidityParams memory params,
198199
bytes calldata hookData
199200
) internal noSelfCall(self) {
200201
if (params.liquidityDelta > 0 && self.hasPermission(BEFORE_ADD_LIQUIDITY_FLAG)) {
@@ -208,7 +209,7 @@ library Hooks {
208209
function afterModifyLiquidity(
209210
IHooks self,
210211
PoolKey memory key,
211-
IPoolManager.ModifyLiquidityParams memory params,
212+
ModifyLiquidityParams memory params,
212213
BalanceDelta delta,
213214
BalanceDelta feesAccrued,
214215
bytes calldata hookData
@@ -244,7 +245,7 @@ library Hooks {
244245
}
245246

246247
/// @notice calls beforeSwap hook if permissioned and validates return value
247-
function beforeSwap(IHooks self, PoolKey memory key, IPoolManager.SwapParams memory params, bytes calldata hookData)
248+
function beforeSwap(IHooks self, PoolKey memory key, SwapParams memory params, bytes calldata hookData)
248249
internal
249250
returns (int256 amountToSwap, BeforeSwapDelta hookReturn, uint24 lpFeeOverride)
250251
{
@@ -284,7 +285,7 @@ library Hooks {
284285
function afterSwap(
285286
IHooks self,
286287
PoolKey memory key,
287-
IPoolManager.SwapParams memory params,
288+
SwapParams memory params,
288289
BalanceDelta swapDelta,
289290
bytes calldata hookData,
290291
BeforeSwapDelta beforeSwapHookReturn

src/test/BaseTestHooks.sol

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ pragma solidity ^0.8.24;
33

44
import {IHooks} from "../interfaces/IHooks.sol";
55
import {PoolKey} from "../types/PoolKey.sol";
6+
import {ModifyLiquidityParams, SwapParams} from "../types/PoolOperation.sol";
67
import {BalanceDelta} from "../types/BalanceDelta.sol";
78
import {BeforeSwapDelta} from "../types/BeforeSwapDelta.sol";
89
import {IPoolManager} from "../interfaces/IPoolManager.sol";
@@ -30,7 +31,7 @@ contract BaseTestHooks is IHooks {
3031
function beforeAddLiquidity(
3132
address, /* sender **/
3233
PoolKey calldata, /* key **/
33-
IPoolManager.ModifyLiquidityParams calldata, /* params **/
34+
ModifyLiquidityParams calldata, /* params **/
3435
bytes calldata /* hookData **/
3536
) external virtual returns (bytes4) {
3637
revert HookNotImplemented();
@@ -39,7 +40,7 @@ contract BaseTestHooks is IHooks {
3940
function afterAddLiquidity(
4041
address, /* sender **/
4142
PoolKey calldata, /* key **/
42-
IPoolManager.ModifyLiquidityParams calldata, /* params **/
43+
ModifyLiquidityParams calldata, /* params **/
4344
BalanceDelta, /* delta **/
4445
BalanceDelta, /* feeDelta **/
4546
bytes calldata /* hookData **/
@@ -50,7 +51,7 @@ contract BaseTestHooks is IHooks {
5051
function beforeRemoveLiquidity(
5152
address, /* sender **/
5253
PoolKey calldata, /* key **/
53-
IPoolManager.ModifyLiquidityParams calldata, /* params **/
54+
ModifyLiquidityParams calldata, /* params **/
5455
bytes calldata /* hookData **/
5556
) external virtual returns (bytes4) {
5657
revert HookNotImplemented();
@@ -59,7 +60,7 @@ contract BaseTestHooks is IHooks {
5960
function afterRemoveLiquidity(
6061
address, /* sender **/
6162
PoolKey calldata, /* key **/
62-
IPoolManager.ModifyLiquidityParams calldata, /* params **/
63+
ModifyLiquidityParams calldata, /* params **/
6364
BalanceDelta, /* delta **/
6465
BalanceDelta, /* feeDelta **/
6566
bytes calldata /* hookData **/
@@ -70,7 +71,7 @@ contract BaseTestHooks is IHooks {
7071
function beforeSwap(
7172
address, /* sender **/
7273
PoolKey calldata, /* key **/
73-
IPoolManager.SwapParams calldata, /* params **/
74+
SwapParams calldata, /* params **/
7475
bytes calldata /* hookData **/
7576
) external virtual returns (bytes4, BeforeSwapDelta, uint24) {
7677
revert HookNotImplemented();
@@ -79,7 +80,7 @@ contract BaseTestHooks is IHooks {
7980
function afterSwap(
8081
address, /* sender **/
8182
PoolKey calldata, /* key **/
82-
IPoolManager.SwapParams calldata, /* params **/
83+
SwapParams calldata, /* params **/
8384
BalanceDelta, /* delta **/
8485
bytes calldata /* hookData **/
8586
) external virtual returns (bytes4, int128) {

src/test/CustomCurveHook.sol

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {Hooks} from "../libraries/Hooks.sol";
55
import {IHooks} from "../interfaces/IHooks.sol";
66
import {IPoolManager} from "../interfaces/IPoolManager.sol";
77
import {PoolKey} from "../types/PoolKey.sol";
8+
import {ModifyLiquidityParams, SwapParams} from "../types/PoolOperation.sol";
89
import {BeforeSwapDelta, toBeforeSwapDelta} from "../types/BeforeSwapDelta.sol";
910
import {BalanceDelta} from "../types/BalanceDelta.sol";
1011
import {Currency} from "../types/Currency.sol";
@@ -32,7 +33,7 @@ contract CustomCurveHook is BaseTestHooks {
3233
function beforeSwap(
3334
address, /* sender **/
3435
PoolKey calldata key,
35-
IPoolManager.SwapParams calldata params,
36+
SwapParams calldata params,
3637
bytes calldata /* hookData **/
3738
) external override onlyPoolManager returns (bytes4, BeforeSwapDelta, uint24) {
3839
(Currency inputCurrency, Currency outputCurrency, uint256 amount) = _getInputOutputAndAmount(key, params);
@@ -50,15 +51,15 @@ contract CustomCurveHook is BaseTestHooks {
5051
function afterAddLiquidity(
5152
address, /* sender **/
5253
PoolKey calldata, /* key **/
53-
IPoolManager.ModifyLiquidityParams calldata, /* params **/
54+
ModifyLiquidityParams calldata, /* params **/
5455
BalanceDelta, /* delta **/
5556
BalanceDelta, /* feeDelta **/
5657
bytes calldata /* hookData **/
5758
) external view override onlyPoolManager returns (bytes4, BalanceDelta) {
5859
revert AddLiquidityDirectToHook();
5960
}
6061

61-
function _getInputOutputAndAmount(PoolKey calldata key, IPoolManager.SwapParams calldata params)
62+
function _getInputOutputAndAmount(PoolKey calldata key, SwapParams calldata params)
6263
internal
6364
pure
6465
returns (Currency input, Currency output, uint256 amount)

src/test/DeltaReturningHook.sol

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {IHooks} from "../interfaces/IHooks.sol";
66
import {IPoolManager} from "../interfaces/IPoolManager.sol";
77
import {CurrencySettler} from "../../test/utils/CurrencySettler.sol";
88
import {PoolKey} from "../types/PoolKey.sol";
9+
import {SwapParams} from "../types/PoolOperation.sol";
910
import {BalanceDelta} from "../types/BalanceDelta.sol";
1011
import {Currency} from "../types/Currency.sol";
1112
import {BaseTestHooks} from "./BaseTestHooks.sol";
@@ -46,7 +47,7 @@ contract DeltaReturningHook is BaseTestHooks {
4647
function beforeSwap(
4748
address, /* sender **/
4849
PoolKey calldata key,
49-
IPoolManager.SwapParams calldata params,
50+
SwapParams calldata params,
5051
bytes calldata /* hookData **/
5152
) external override onlyPoolManager returns (bytes4, BeforeSwapDelta, uint24) {
5253
(Currency specifiedCurrency, Currency unspecifiedCurrency) = _sortCurrencies(key, params);
@@ -62,7 +63,7 @@ contract DeltaReturningHook is BaseTestHooks {
6263
function afterSwap(
6364
address, /* sender **/
6465
PoolKey calldata key,
65-
IPoolManager.SwapParams calldata params,
66+
SwapParams calldata params,
6667
BalanceDelta, /* delta **/
6768
bytes calldata /* hookData **/
6869
) external override onlyPoolManager returns (bytes4, int128) {
@@ -72,7 +73,7 @@ contract DeltaReturningHook is BaseTestHooks {
7273
return (IHooks.afterSwap.selector, deltaUnspecifiedAfterSwap);
7374
}
7475

75-
function _sortCurrencies(PoolKey calldata key, IPoolManager.SwapParams calldata params)
76+
function _sortCurrencies(PoolKey calldata key, SwapParams calldata params)
7677
internal
7778
pure
7879
returns (Currency specified, Currency unspecified)

src/test/DynamicFeesTestHook.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ pragma solidity ^0.8.24;
33

44
import {BaseTestHooks} from "./BaseTestHooks.sol";
55
import {PoolKey} from "../types/PoolKey.sol";
6+
import {SwapParams} from "../types/PoolOperation.sol";
67
import {IPoolManager} from "../interfaces/IPoolManager.sol";
78
import {IHooks} from "../interfaces/IHooks.sol";
89
import {BeforeSwapDelta, BeforeSwapDeltaLibrary} from "../types/BeforeSwapDelta.sol";
@@ -24,7 +25,7 @@ contract DynamicFeesTestHook is BaseTestHooks {
2425
return IHooks.afterInitialize.selector;
2526
}
2627

27-
function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata, bytes calldata)
28+
function beforeSwap(address, PoolKey calldata key, SwapParams calldata, bytes calldata)
2829
external
2930
override
3031
returns (bytes4, BeforeSwapDelta, uint24)

src/test/DynamicReturnFeeTestHook.sol

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ pragma solidity ^0.8.24;
33

44
import {BaseTestHooks} from "./BaseTestHooks.sol";
55
import {PoolKey} from "../types/PoolKey.sol";
6+
import {SwapParams} from "../types/PoolOperation.sol";
67
import {IPoolManager} from "../interfaces/IPoolManager.sol";
78
import {IHooks} from "../interfaces/IHooks.sol";
89
import {BeforeSwapDelta, BeforeSwapDeltaLibrary} from "../types/BeforeSwapDelta.sol";
@@ -22,7 +23,7 @@ contract DynamicReturnFeeTestHook is BaseTestHooks {
2223
fee = _fee;
2324
}
2425

25-
function beforeSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, bytes calldata)
26+
function beforeSwap(address, PoolKey calldata, SwapParams calldata, bytes calldata)
2627
external
2728
view
2829
override

0 commit comments

Comments
 (0)