Skip to content

Commit e25a8fc

Browse files
authored
Merge pull request #33 from KyberNetwork/custom-fee-recipient
feat: add custom fee recipients
2 parents d184a38 + 0f79a36 commit e25a8fc

38 files changed

+341
-165
lines changed

foundry.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ ffi = true
66
fs_permissions = [{ access = 'read-write', path = './'}]
77

88
additional_compiler_profiles = [
9-
{ name = "si_router", via_ir = true, optimizer_runs = 1000 }
9+
{ name = "si_router", via_ir = true, optimizer_runs = 500 }
1010
]
1111

1212
compilation_restrictions = [
13-
{ paths = "src/KSSmartIntentRouter.sol", optimizer_runs = 1000 },
13+
{ paths = "src/KSSmartIntentRouter.sol", optimizer_runs = 500 },
1414
]
1515

1616
[lint]

script/DeployRouter.s.sol

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,13 @@ contract DeployRouter is BaseScript {
1717
address[] memory guardians = _readAddressArray('router-guardians');
1818
address[] memory rescuers = _readAddressArray('router-rescuers');
1919
address[] memory actionContracts = _readAddressArray('action-contracts');
20-
address feeRecipient = _readAddress('fee-recipient');
2120
address forwarder = _readAddress('forwarder');
2221

2322
vm.startBroadcast();
2423

2524
bytes memory creationCode = abi.encodePacked(
2625
type(KSSmartIntentRouter).creationCode,
27-
abi.encode(admin, guardians, rescuers, actionContracts, feeRecipient, forwarder)
26+
abi.encode(admin, guardians, rescuers, actionContracts, forwarder)
2827
);
2928
address router = _create3Deploy(keccak256(abi.encodePacked(salt)), creationCode);
3029

script/config/fee-recipient.json

Whitespace-only changes.

src/KSSmartIntentRouter.sol

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,12 @@ contract KSSmartIntentRouter is
3030
address[] memory initialGuardians,
3131
address[] memory initialRescuers,
3232
address[] memory initialActionContracts,
33-
address _feeRecipient,
3433
address _forwarder
3534
) ManagementBase(0, initialAdmin) {
3635
_batchGrantRole(KSRoles.GUARDIAN_ROLE, initialGuardians);
3736
_batchGrantRole(KSRoles.RESCUER_ROLE, initialRescuers);
3837
_batchGrantRole(ACTION_CONTRACT_ROLE, initialActionContracts);
3938

40-
_updateFeeRecipient(_feeRecipient);
4139
_updateForwarder(_forwarder);
4240
}
4341

@@ -64,17 +62,6 @@ contract KSSmartIntentRouter is
6462
emit UpdateForwarder(newForwarder);
6563
}
6664

67-
/// @inheritdoc IKSSmartIntentRouter
68-
function updateFeeRecipient(address newFeeRecipient) public onlyRole(DEFAULT_ADMIN_ROLE) {
69-
_updateFeeRecipient(newFeeRecipient);
70-
}
71-
72-
function _updateFeeRecipient(address newFeeRecipient) internal {
73-
feeRecipient = newFeeRecipient;
74-
75-
emit UpdateFeeRecipient(newFeeRecipient);
76-
}
77-
7865
/// @inheritdoc IKSSmartIntentRouter
7966
function delegate(IntentData calldata intentData) public {
8067
if (intentData.coreData.mainAddress != msg.sender) {
@@ -169,7 +156,7 @@ contract KSSmartIntentRouter is
169156
);
170157

171158
(uint256[] memory fees, bytes memory beforeExecutionData) =
172-
HookLibrary.beforeExecution(intentHash, intentData, feeRecipient, actionData);
159+
HookLibrary.beforeExecution(intentHash, intentData, actionData);
173160

174161
address actionContract = intentData.coreData.actionContracts[actionData.actionSelectorId];
175162
bytes4 actionSelector = intentData.coreData.actionSelectors[actionData.actionSelectorId];
@@ -198,7 +185,7 @@ contract KSSmartIntentRouter is
198185
}
199186

200187
HookLibrary.afterExecution(
201-
intentHash, intentData, feeRecipient, beforeExecutionData, actionResult
188+
intentHash, intentData, actionData, beforeExecutionData, actionResult
202189
);
203190

204191
emit ExecuteIntent(intentHash, actionData, actionResult);

src/KSSmartIntentRouterAccounting.sol

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ abstract contract KSSmartIntentRouterAccounting is KSSmartIntentStorage, Managem
4949
IKSGenericForwarder _forwarder,
5050
uint256[] memory fees
5151
) internal checkLengths(actionData.erc20Ids.length, actionData.erc20Amounts.length) {
52-
/// @dev gas optimization
53-
address _feeRecipient = feeRecipient;
54-
5552
uint256 approvalFlags = actionData.approvalFlags;
5653

5754
for (uint256 i = 0; i < actionData.erc20Ids.length; i++) {
@@ -67,7 +64,8 @@ abstract contract KSSmartIntentRouterAccounting is KSSmartIntentStorage, Managem
6764
fees[i],
6865
_checkFlag(approvalFlags, i),
6966
_forwarder,
70-
_feeRecipient
67+
actionData.feeInfo,
68+
actionData.partnerRecipient
7169
);
7270
}
7371
approvalFlags >>= tokenData.erc20Data.length;

src/KSSmartIntentStorage.sol

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,4 @@ abstract contract KSSmartIntentStorage is IKSSmartIntentRouter {
99
mapping(bytes32 => IntentStatus) internal intentStatuses;
1010

1111
IKSGenericForwarder internal forwarder;
12-
13-
address internal feeRecipient;
1412
}

src/hooks/base/BaseConditionalHook.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ pragma solidity ^0.8.0;
33

44
import './BaseHook.sol';
55

6+
import '../../interfaces/hooks/IKSConditionalHook.sol';
67
import 'openzeppelin-contracts/contracts/utils/math/Math.sol';
7-
import 'src/interfaces/hooks/IKSConditionalHook.sol';
88

99
/**
1010
* @param startTimestamp the start timestamp of the condition

src/hooks/base/BaseTickBasedRemoveLiquidityHook.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
// SPDX-License-Identifier: GPL-3.0-or-later
22
pragma solidity ^0.8.0;
33

4+
import '../../hooks/base/BaseConditionalHook.sol';
45
import 'ks-common-sc/src/libraries/token/TokenHelper.sol';
5-
import 'src/hooks/base/BaseConditionalHook.sol';
66

7+
import {IPositionManager} from '../../interfaces/uniswapv4/IPositionManager.sol';
78
import 'openzeppelin-contracts/contracts/token/ERC721/IERC721.sol';
8-
import {IPositionManager} from 'src/interfaces/uniswapv4/IPositionManager.sol';
99

1010
abstract contract BaseTickBasedRemoveLiquidityHook is BaseConditionalHook {
1111
using TokenHelper for address;

src/hooks/remove-liq/KSRemoveLiquidityPancakeV4CLHook.sol

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

44
import 'ks-common-sc/src/libraries/token/TokenHelper.sol';
55

6-
import 'src/hooks/base/BaseTickBasedRemoveLiquidityHook.sol';
7-
import 'src/interfaces/pancakev4/ICLPositionManager.sol';
8-
import {PoolId, TickInfo} from 'src/interfaces/pancakev4/Types.sol';
9-
import 'src/libraries/uniswapv4/LiquidityAmounts.sol';
10-
import 'src/libraries/uniswapv4/TickMath.sol';
6+
import '../../interfaces/pancakev4/ICLPositionManager.sol';
7+
import {PoolId, TickInfo} from '../../interfaces/pancakev4/Types.sol';
8+
import '../../libraries/uniswapv4/LiquidityAmounts.sol';
9+
import '../../libraries/uniswapv4/TickMath.sol';
10+
import '../base/BaseTickBasedRemoveLiquidityHook.sol';
1111

1212
contract KSRemoveLiquidityPancakeV4CLHook is BaseTickBasedRemoveLiquidityHook {
1313
using TokenHelper for address;

src/hooks/remove-liq/KSRemoveLiquidityUniswapV3Hook.sol

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
// SPDX-License-Identifier: GPL-3.0-or-later
22
pragma solidity ^0.8.0;
33

4-
import 'ks-common-sc/src/libraries/token/TokenHelper.sol';
5-
import 'src/hooks/base/BaseTickBasedRemoveLiquidityHook.sol';
4+
import '../base/BaseTickBasedRemoveLiquidityHook.sol';
5+
6+
import '../../interfaces/uniswapv3/IUniswapV3PM.sol';
7+
import '../../interfaces/uniswapv3/IUniswapV3Pool.sol';
8+
import '../../libraries/uniswapv4/LiquidityAmounts.sol';
9+
import '../../libraries/uniswapv4/TickMath.sol';
610

711
import 'ks-common-sc/src/libraries/calldata/CalldataDecoder.sol';
8-
import 'src/interfaces/uniswapv3/IUniswapV3PM.sol';
9-
import 'src/interfaces/uniswapv3/IUniswapV3Pool.sol';
10-
import 'src/libraries/uniswapv4/LiquidityAmounts.sol';
11-
import 'src/libraries/uniswapv4/TickMath.sol';
12+
import 'ks-common-sc/src/libraries/token/TokenHelper.sol';
1213

1314
contract KSRemoveLiquidityUniswapV3Hook is BaseTickBasedRemoveLiquidityHook {
1415
using TokenHelper for address;

0 commit comments

Comments
 (0)