@layerzerolabs/utils-upgradeable-evm-contracts 1.2.9 → 1.2.11

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.
@@ -6,9 +6,7 @@ import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/trans
6
6
  import { Test } from "forge-std/Test.sol";
7
7
  import { FeeConfigBaseUpgradeable } from "./../contracts/fee-config/FeeConfigBaseUpgradeable.sol";
8
8
 
9
- interface IFeeConfigTestHelper is IFeeConfig {}
10
-
11
- contract FeeConfigBaseUpgradeableMock is FeeConfigBaseUpgradeable {
9
+ contract FeeConfigBaseUpgradeableHarness is FeeConfigBaseUpgradeable {
12
10
  constructor() {
13
11
  _disableInitializers();
14
12
  }
@@ -25,36 +23,36 @@ contract FeeConfigBaseUpgradeableMock is FeeConfigBaseUpgradeable {
25
23
  }
26
24
 
27
25
  contract FeeConfigBaseUpgradeableTest is Test {
28
- IFeeConfigTestHelper public feeConfigHelper;
26
+ IFeeConfig public feeConfig;
29
27
 
30
28
  uint32 constant EID_1 = 1;
31
29
  uint32 constant EID_2 = 2;
32
30
  uint16 constant BPS_DENOMINATOR = 10000;
33
31
 
34
- function _deployFeeConfigHelper() internal virtual returns (IFeeConfigTestHelper) {
35
- FeeConfigBaseUpgradeableMock impl = new FeeConfigBaseUpgradeableMock();
32
+ function _deployFeeConfig() internal virtual returns (IFeeConfig) {
33
+ FeeConfigBaseUpgradeableHarness impl = new FeeConfigBaseUpgradeableHarness();
36
34
  TransparentUpgradeableProxy proxy = new TransparentUpgradeableProxy(
37
35
  address(impl),
38
36
  address(this),
39
- abi.encodeWithSelector(FeeConfigBaseUpgradeableMock.initialize.selector)
37
+ abi.encodeWithSelector(FeeConfigBaseUpgradeableHarness.initialize.selector)
40
38
  );
41
39
 
42
- return IFeeConfigTestHelper(address(proxy));
40
+ return IFeeConfig(address(proxy));
43
41
  }
44
42
 
45
43
  function setUp() public virtual {
46
- feeConfigHelper = _deployFeeConfigHelper();
44
+ feeConfig = _deployFeeConfig();
47
45
  }
48
46
 
49
47
  function test_setDefaultFeeBps_Fuzz(uint16 _feeBps) public {
50
48
  if (_feeBps > BPS_DENOMINATOR) {
51
49
  vm.expectRevert(abi.encodeWithSelector(IFeeConfig.InvalidBps.selector, _feeBps));
52
- feeConfigHelper.setDefaultFeeBps(_feeBps);
50
+ feeConfig.setDefaultFeeBps(_feeBps);
53
51
  } else {
54
52
  vm.expectEmit(false, false, false, true);
55
53
  emit IFeeConfig.DefaultFeeBpsSet(_feeBps);
56
- feeConfigHelper.setDefaultFeeBps(_feeBps);
57
- assertEq(feeConfigHelper.defaultFeeBps(), _feeBps);
54
+ feeConfig.setDefaultFeeBps(_feeBps);
55
+ assertEq(feeConfig.defaultFeeBps(), _feeBps);
58
56
  }
59
57
  }
60
58
 
@@ -64,22 +62,22 @@ contract FeeConfigBaseUpgradeableTest is Test {
64
62
 
65
63
  function test_setFeeBps_Fuzz(uint16 _defaultFeeBps, uint32 _dstEid, uint16 _feeBps, bool _enabled) public {
66
64
  _defaultFeeBps = uint16(bound(_defaultFeeBps, 0, BPS_DENOMINATOR));
67
- feeConfigHelper.setDefaultFeeBps(_defaultFeeBps);
68
- assertEq(feeConfigHelper.defaultFeeBps(), _defaultFeeBps);
65
+ feeConfig.setDefaultFeeBps(_defaultFeeBps);
66
+ assertEq(feeConfig.defaultFeeBps(), _defaultFeeBps);
69
67
 
70
68
  if (_feeBps > BPS_DENOMINATOR) {
71
69
  vm.expectRevert(abi.encodeWithSelector(IFeeConfig.InvalidBps.selector, _feeBps));
72
- feeConfigHelper.setFeeBps(_dstEid, _feeBps, _enabled);
70
+ feeConfig.setFeeBps(_dstEid, _feeBps, _enabled);
73
71
  } else {
74
72
  vm.expectEmit(false, false, false, true);
75
73
  emit IFeeConfig.FeeBpsSet(_dstEid, _feeBps, _enabled);
76
- feeConfigHelper.setFeeBps(_dstEid, _feeBps, _enabled);
74
+ feeConfig.setFeeBps(_dstEid, _feeBps, _enabled);
77
75
 
78
- IFeeConfig.FeeConfig memory config = feeConfigHelper.feeBps(_dstEid);
76
+ IFeeConfig.FeeConfig memory config = feeConfig.feeBps(_dstEid);
79
77
  assertEq(config.feeBps, _feeBps);
80
78
  assertEq(config.enabled, _enabled);
81
79
 
82
- uint256 fee = feeConfigHelper.getFee(_dstEid, 10000);
80
+ uint256 fee = feeConfig.getFee(_dstEid, 10000);
83
81
  uint16 expectedBps = _enabled ? _feeBps : _defaultFeeBps;
84
82
  assertEq(fee, expectedBps);
85
83
  }
@@ -91,127 +89,127 @@ contract FeeConfigBaseUpgradeableTest is Test {
91
89
 
92
90
  function test_getFee_Fuzz(uint16 _defaultFeeBps, uint32 _dstEid, uint240 _amount) public {
93
91
  _defaultFeeBps = uint16(bound(_defaultFeeBps, 0, BPS_DENOMINATOR));
94
- feeConfigHelper.setDefaultFeeBps(_defaultFeeBps);
92
+ feeConfig.setDefaultFeeBps(_defaultFeeBps);
95
93
 
96
94
  uint256 expectedFee = _defaultFeeBps == 0 ? 0 : (uint256(_amount) * _defaultFeeBps) / BPS_DENOMINATOR;
97
- assertEq(feeConfigHelper.getFee(_dstEid, _amount), expectedFee);
95
+ assertEq(feeConfig.getFee(_dstEid, _amount), expectedFee);
98
96
  }
99
97
 
100
98
  function test_setDefaultFeeBps_RevertInvalid() public {
101
99
  vm.expectRevert(abi.encodeWithSelector(IFeeConfig.InvalidBps.selector, 10001));
102
- feeConfigHelper.setDefaultFeeBps(10001);
100
+ feeConfig.setDefaultFeeBps(10001);
103
101
  }
104
102
 
105
103
  function test_setFeeBps_RevertInvalid() public {
106
104
  vm.expectRevert(abi.encodeWithSelector(IFeeConfig.InvalidBps.selector, 10001));
107
- feeConfigHelper.setFeeBps(EID_1, 10001, true);
105
+ feeConfig.setFeeBps(EID_1, 10001, true);
108
106
  }
109
107
 
110
108
  function test_getFee_Default() public {
111
- feeConfigHelper.setDefaultFeeBps(500);
109
+ feeConfig.setDefaultFeeBps(500);
112
110
  uint256 amount = 1000;
113
111
  uint256 expectedFee = 50;
114
- assertEq(feeConfigHelper.getFee(EID_1, amount), expectedFee);
112
+ assertEq(feeConfig.getFee(EID_1, amount), expectedFee);
115
113
  }
116
114
 
117
115
  function test_getFee_Specific() public {
118
- feeConfigHelper.setDefaultFeeBps(500);
119
- feeConfigHelper.setFeeBps(EID_1, 200, true);
116
+ feeConfig.setDefaultFeeBps(500);
117
+ feeConfig.setFeeBps(EID_1, 200, true);
120
118
  uint256 amount = 1000;
121
119
  uint256 expectedFee = 20;
122
- assertEq(feeConfigHelper.getFee(EID_1, amount), expectedFee);
120
+ assertEq(feeConfig.getFee(EID_1, amount), expectedFee);
123
121
  }
124
122
 
125
123
  function test_getFee_SpecificDisabled() public {
126
- feeConfigHelper.setDefaultFeeBps(500);
127
- feeConfigHelper.setFeeBps(EID_1, 200, false);
124
+ feeConfig.setDefaultFeeBps(500);
125
+ feeConfig.setFeeBps(EID_1, 200, false);
128
126
  uint256 amount = 1000;
129
127
  uint256 expectedFee = 50;
130
- assertEq(feeConfigHelper.getFee(EID_1, amount), expectedFee);
128
+ assertEq(feeConfig.getFee(EID_1, amount), expectedFee);
131
129
  }
132
130
 
133
131
  function test_getFee_BoundaryConditions() public {
134
- feeConfigHelper.setDefaultFeeBps(500);
135
- assertEq(feeConfigHelper.getFee(EID_1, 0), 0);
136
- feeConfigHelper.setFeeBps(EID_1, 10000, true);
137
- assertEq(feeConfigHelper.getFee(EID_1, 100), 100);
138
- feeConfigHelper.setFeeBps(EID_1, 0, true);
139
- assertEq(feeConfigHelper.getFee(EID_1, 1000), 0);
132
+ feeConfig.setDefaultFeeBps(500);
133
+ assertEq(feeConfig.getFee(EID_1, 0), 0);
134
+ feeConfig.setFeeBps(EID_1, 10000, true);
135
+ assertEq(feeConfig.getFee(EID_1, 100), 100);
136
+ feeConfig.setFeeBps(EID_1, 0, true);
137
+ assertEq(feeConfig.getFee(EID_1, 1000), 0);
140
138
  }
141
139
 
142
140
  function test_getFee_Rounding() public {
143
- feeConfigHelper.setDefaultFeeBps(1000);
144
- assertEq(feeConfigHelper.getFee(EID_1, 15), 1);
145
- assertEq(feeConfigHelper.getFee(EID_1, 9), 0);
141
+ feeConfig.setDefaultFeeBps(1000);
142
+ assertEq(feeConfig.getFee(EID_1, 15), 1);
143
+ assertEq(feeConfig.getFee(EID_1, 9), 0);
146
144
  }
147
145
 
148
146
  // ============ getAmountBeforeFee Tests ============
149
147
 
150
148
  function test_getAmountBeforeFee_ZeroBps() public view {
151
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 0), 0);
152
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 1000), 1000);
153
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, type(uint256).max), type(uint256).max);
149
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 0), 0);
150
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 1000), 1000);
151
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, type(uint256).max), type(uint256).max);
154
152
  }
155
153
 
156
154
  function test_getAmountBeforeFee_MaxBps() public {
157
- feeConfigHelper.setDefaultFeeBps(BPS_DENOMINATOR);
158
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 0), 0);
159
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 1000), 0);
160
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, type(uint256).max), 0);
155
+ feeConfig.setDefaultFeeBps(BPS_DENOMINATOR);
156
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 0), 0);
157
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 1000), 0);
158
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, type(uint256).max), 0);
161
159
  }
162
160
 
163
161
  function test_getAmountBeforeFee_Default() public {
164
- feeConfigHelper.setDefaultFeeBps(500);
165
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 950), 1000);
166
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_2, 950), 1000);
162
+ feeConfig.setDefaultFeeBps(500);
163
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 950), 1000);
164
+ assertEq(feeConfig.getAmountBeforeFee(EID_2, 950), 1000);
167
165
  }
168
166
 
169
167
  function test_getAmountBeforeFee_Specific() public {
170
- feeConfigHelper.setDefaultFeeBps(500);
171
- feeConfigHelper.setFeeBps(EID_1, 200, true);
172
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 980), 1000);
173
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_2, 950), 1000);
168
+ feeConfig.setDefaultFeeBps(500);
169
+ feeConfig.setFeeBps(EID_1, 200, true);
170
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 980), 1000);
171
+ assertEq(feeConfig.getAmountBeforeFee(EID_2, 950), 1000);
174
172
  }
175
173
 
176
174
  function test_getAmountBeforeFee_SpecificDisabled() public {
177
- feeConfigHelper.setDefaultFeeBps(500);
178
- feeConfigHelper.setFeeBps(EID_1, 200, false);
179
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 950), 1000);
175
+ feeConfig.setDefaultFeeBps(500);
176
+ feeConfig.setFeeBps(EID_1, 200, false);
177
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 950), 1000);
180
178
  }
181
179
 
182
180
  function test_getAmountBeforeFee_ZeroAmount() public {
183
- feeConfigHelper.setDefaultFeeBps(500);
184
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 0), 0);
181
+ feeConfig.setDefaultFeeBps(500);
182
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 0), 0);
185
183
  }
186
184
 
187
185
  function test_getAmountBeforeFee_Rounding() public {
188
- feeConfigHelper.setDefaultFeeBps(1000);
186
+ feeConfig.setDefaultFeeBps(1000);
189
187
 
190
188
  // (15 * 10000) / 9000 = 16, getFee(16) = 1, 16-1 = 15.
191
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 15), 16);
189
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 15), 16);
192
190
  // (9 * 10000) / 9000 = 10, getFee(10) = 1, 10-1 = 9.
193
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 9), 10);
191
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 9), 10);
194
192
  // (1 * 10000) / 9000 = 1, getFee(1) = 0, 1-0 = 1.
195
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 1), 1);
193
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 1), 1);
196
194
  }
197
195
 
198
196
  function test_getAmountBeforeFee_BoundaryConditions() public {
199
197
  // 1 bps (0.01%) — near-zero fee.
200
- feeConfigHelper.setDefaultFeeBps(1);
201
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 9999), 10000);
202
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 1), 1);
198
+ feeConfig.setDefaultFeeBps(1);
199
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 9999), 10000);
200
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 1), 1);
203
201
 
204
202
  // 9999 bps (99.99%) — near-total fee.
205
- feeConfigHelper.setDefaultFeeBps(9999);
203
+ feeConfig.setDefaultFeeBps(9999);
206
204
  // (1 * 10000) / 1 = 10000, getFee(10000) = 9999, 10000-9999 = 1.
207
- assertEq(feeConfigHelper.getAmountBeforeFee(EID_1, 1), 10000);
205
+ assertEq(feeConfig.getAmountBeforeFee(EID_1, 1), 10000);
208
206
  }
209
207
 
210
208
  function test_getAmountBeforeFee_Fuzz(uint16 _feeBps, uint224 _amountAfterFee) public {
211
209
  _feeBps = uint16(bound(_feeBps, 0, BPS_DENOMINATOR));
212
- feeConfigHelper.setDefaultFeeBps(_feeBps);
210
+ feeConfig.setDefaultFeeBps(_feeBps);
213
211
 
214
- uint256 amountBefore = feeConfigHelper.getAmountBeforeFee(EID_1, _amountAfterFee);
212
+ uint256 amountBefore = feeConfig.getAmountBeforeFee(EID_1, _amountAfterFee);
215
213
 
216
214
  if (_feeBps == BPS_DENOMINATOR) {
217
215
  assertEq(amountBefore, 0);
@@ -219,7 +217,7 @@ contract FeeConfigBaseUpgradeableTest is Test {
219
217
  assertEq(amountBefore, _amountAfterFee);
220
218
  } else {
221
219
  // Core inverse invariant: `amountBefore - getFee(amountBefore) == amountAfterFee`.
222
- uint256 fee = feeConfigHelper.getFee(EID_1, amountBefore);
220
+ uint256 fee = feeConfig.getFee(EID_1, amountBefore);
223
221
  assertEq(amountBefore - fee, _amountAfterFee);
224
222
  }
225
223
  }
@@ -1,12 +1,13 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity ^0.8.22;
3
3
 
4
+ import { IFeeConfig } from "@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol";
4
5
  import { IAccessControl } from "@openzeppelin/contracts/access/IAccessControl.sol";
5
6
  import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
6
7
  import { FeeConfigRBACUpgradeable } from "./../contracts/fee-config/FeeConfigRBACUpgradeable.sol";
7
- import { FeeConfigBaseUpgradeableTest, IFeeConfigTestHelper } from "./FeeConfigBaseUpgradeable.t.sol";
8
+ import { FeeConfigBaseUpgradeableTest } from "./FeeConfigBaseUpgradeable.t.sol";
8
9
 
9
- contract FeeConfigRBACUpgradeableMock is FeeConfigRBACUpgradeable {
10
+ contract FeeConfigRBACUpgradeableHarness is FeeConfigRBACUpgradeable {
10
11
  constructor() {
11
12
  _disableInitializers();
12
13
  }
@@ -19,20 +20,22 @@ contract FeeConfigRBACUpgradeableMock is FeeConfigRBACUpgradeable {
19
20
 
20
21
  contract FeeConfigRBACUpgradeableTest is FeeConfigBaseUpgradeableTest {
21
22
  address alice = makeAddr("alice");
23
+ FeeConfigRBACUpgradeableHarness feeConfigRbac;
22
24
 
23
- function _deployFeeConfigHelper() internal virtual override returns (IFeeConfigTestHelper) {
24
- FeeConfigRBACUpgradeableMock impl = new FeeConfigRBACUpgradeableMock();
25
+ function _deployFeeConfig() internal virtual override returns (IFeeConfig) {
26
+ FeeConfigRBACUpgradeableHarness impl = new FeeConfigRBACUpgradeableHarness();
25
27
  TransparentUpgradeableProxy proxy = new TransparentUpgradeableProxy(
26
28
  address(impl),
27
29
  address(this),
28
- abi.encodeWithSelector(FeeConfigRBACUpgradeableMock.initialize.selector, address(this))
30
+ abi.encodeWithSelector(FeeConfigRBACUpgradeableHarness.initialize.selector, address(this))
29
31
  );
30
32
 
31
- return IFeeConfigTestHelper(address(proxy));
33
+ feeConfigRbac = FeeConfigRBACUpgradeableHarness(address(proxy));
34
+ return IFeeConfig(address(proxy));
32
35
  }
33
36
 
34
37
  function test_setDefaultFeeBps_Revert_Unauthorized() public {
35
- bytes32 feeConfigManagerRole = FeeConfigRBACUpgradeableMock(address(feeConfigHelper)).FEE_CONFIG_MANAGER_ROLE();
38
+ bytes32 feeConfigManagerRole = feeConfigRbac.FEE_CONFIG_MANAGER_ROLE();
36
39
  vm.expectRevert(
37
40
  abi.encodeWithSelector(
38
41
  IAccessControl.AccessControlUnauthorizedAccount.selector,
@@ -41,11 +44,11 @@ contract FeeConfigRBACUpgradeableTest is FeeConfigBaseUpgradeableTest {
41
44
  )
42
45
  );
43
46
  vm.prank(alice);
44
- feeConfigHelper.setDefaultFeeBps(100);
47
+ feeConfig.setDefaultFeeBps(100);
45
48
  }
46
49
 
47
50
  function test_setFeeBps_Revert_Unauthorized() public {
48
- bytes32 feeConfigManagerRole = FeeConfigRBACUpgradeableMock(address(feeConfigHelper)).FEE_CONFIG_MANAGER_ROLE();
51
+ bytes32 feeConfigManagerRole = feeConfigRbac.FEE_CONFIG_MANAGER_ROLE();
49
52
  vm.expectRevert(
50
53
  abi.encodeWithSelector(
51
54
  IAccessControl.AccessControlUnauthorizedAccount.selector,
@@ -54,6 +57,6 @@ contract FeeConfigRBACUpgradeableTest is FeeConfigBaseUpgradeableTest {
54
57
  )
55
58
  );
56
59
  vm.prank(alice);
57
- feeConfigHelper.setFeeBps(1, 100, true);
60
+ feeConfig.setFeeBps(1, 100, true);
58
61
  }
59
62
  }
@@ -6,9 +6,7 @@ import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/trans
6
6
  import { Test } from "forge-std/Test.sol";
7
7
  import { FeeHandlerBaseUpgradeable } from "./../contracts/fee-accounting/FeeHandlerBaseUpgradeable.sol";
8
8
 
9
- interface IFeeHandlerTestHelper is IFeeHandler {}
10
-
11
- contract FeeHandlerBaseUpgradeableMock is FeeHandlerBaseUpgradeable {
9
+ contract FeeHandlerBaseUpgradeableHarness is FeeHandlerBaseUpgradeable {
12
10
  constructor() {
13
11
  _disableInitializers();
14
12
  }
@@ -22,39 +20,48 @@ contract FeeHandlerBaseUpgradeableMock is FeeHandlerBaseUpgradeable {
22
20
  }
23
21
  }
24
22
 
25
- abstract contract FeeHandlerBaseUpgradeableTestCommon is Test {
26
- IFeeHandlerTestHelper public feeHandlerHelper;
23
+ contract FeeHandlerBaseUpgradeableTest is Test {
24
+ IFeeHandler public feeHandler;
27
25
 
28
26
  address alice = makeAddr("alice");
29
27
  address bob = makeAddr("bob");
30
28
 
31
- function setUp() public virtual {
32
- feeHandlerHelper = _deployFeeHandlerHelper();
29
+ function _deployFeeHandler() internal virtual returns (IFeeHandler) {
30
+ FeeHandlerBaseUpgradeableHarness impl = new FeeHandlerBaseUpgradeableHarness();
31
+ TransparentUpgradeableProxy proxy = new TransparentUpgradeableProxy(
32
+ address(impl),
33
+ address(this),
34
+ abi.encodeWithSelector(FeeHandlerBaseUpgradeableHarness.initialize.selector, alice)
35
+ );
36
+
37
+ return IFeeHandler(address(proxy));
33
38
  }
34
39
 
35
- function _deployFeeHandlerHelper() internal virtual returns (IFeeHandlerTestHelper);
40
+ function setUp() public virtual {
41
+ feeHandler = _deployFeeHandler();
42
+ }
36
43
 
37
44
  function test_feeDeposit() public view {
38
- assertEq(feeHandlerHelper.feeDeposit(), alice);
45
+ assertEq(feeHandler.feeDeposit(), alice);
39
46
  }
40
47
 
41
48
  function test_setFeeDeposit() public {
42
- vm.expectEmit(true, true, true, true, address(feeHandlerHelper));
49
+ vm.expectEmit(true, true, true, true, address(feeHandler));
43
50
  emit IFeeHandler.FeeDepositSet(bob);
44
- feeHandlerHelper.setFeeDeposit(bob);
51
+ feeHandler.setFeeDeposit(bob);
45
52
 
46
- assertEq(feeHandlerHelper.feeDeposit(), bob);
53
+ assertEq(feeHandler.feeDeposit(), bob);
47
54
  }
48
55
 
49
56
  function test_setFeeDeposit_Revert_ZeroAddress() public {
50
57
  vm.expectRevert(IFeeHandler.InvalidFeeDeposit.selector);
51
- feeHandlerHelper.setFeeDeposit(address(0));
58
+ feeHandler.setFeeDeposit(address(0));
52
59
  }
53
60
 
54
61
  function test_setFeeDeposit_Fuzz(address _newDeposit) public {
55
62
  vm.assume(_newDeposit != address(0));
56
- feeHandlerHelper.setFeeDeposit(_newDeposit);
57
- assertEq(feeHandlerHelper.feeDeposit(), _newDeposit);
63
+ feeHandler.setFeeDeposit(_newDeposit);
64
+ assertEq(feeHandler.feeDeposit(), _newDeposit);
58
65
  }
59
66
 
60
67
  function test_storageHash() public pure {
@@ -63,16 +70,3 @@ abstract contract FeeHandlerBaseUpgradeableTestCommon is Test {
63
70
  assertEq(storageHash, 0xe32e0c5f1df3081ca85b86156deac82a46e8fb7b21b412e09f7ccdc5fca29900);
64
71
  }
65
72
  }
66
-
67
- contract FeeHandlerBaseUpgradeableTest is FeeHandlerBaseUpgradeableTestCommon {
68
- function _deployFeeHandlerHelper() internal virtual override returns (IFeeHandlerTestHelper) {
69
- FeeHandlerBaseUpgradeableMock impl = new FeeHandlerBaseUpgradeableMock();
70
- TransparentUpgradeableProxy proxy = new TransparentUpgradeableProxy(
71
- address(impl),
72
- address(this),
73
- abi.encodeWithSelector(FeeHandlerBaseUpgradeableMock.initialize.selector, alice)
74
- );
75
-
76
- return IFeeHandlerTestHelper(address(proxy));
77
- }
78
- }
@@ -1,12 +1,13 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity ^0.8.22;
3
3
 
4
+ import { IFeeHandler } from "@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol";
4
5
  import { IAccessControl } from "@openzeppelin/contracts/access/IAccessControl.sol";
5
6
  import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
6
7
  import { FeeHandlerRBACUpgradeable } from "./../contracts/fee-accounting/FeeHandlerRBACUpgradeable.sol";
7
- import { FeeHandlerBaseUpgradeableTestCommon, IFeeHandlerTestHelper } from "./FeeHandlerBaseUpgradeable.t.sol";
8
+ import { FeeHandlerBaseUpgradeableTest } from "./FeeHandlerBaseUpgradeable.t.sol";
8
9
 
9
- contract FeeHandlerRBACUpgradeableMock is FeeHandlerRBACUpgradeable {
10
+ contract FeeHandlerRBACUpgradeableHarness is FeeHandlerRBACUpgradeable {
10
11
  constructor() {
11
12
  _disableInitializers();
12
13
  }
@@ -17,18 +18,20 @@ contract FeeHandlerRBACUpgradeableMock is FeeHandlerRBACUpgradeable {
17
18
  }
18
19
  }
19
20
 
20
- contract FeeHandlerRBACUpgradeableTest is FeeHandlerBaseUpgradeableTestCommon {
21
+ contract FeeHandlerRBACUpgradeableTest is FeeHandlerBaseUpgradeableTest {
21
22
  address charlie = makeAddr("charlie");
23
+ FeeHandlerRBACUpgradeableHarness feeHandlerRbac;
22
24
 
23
- function _deployFeeHandlerHelper() internal virtual override returns (IFeeHandlerTestHelper) {
24
- FeeHandlerRBACUpgradeableMock impl = new FeeHandlerRBACUpgradeableMock();
25
+ function _deployFeeHandler() internal virtual override returns (IFeeHandler) {
26
+ FeeHandlerRBACUpgradeableHarness impl = new FeeHandlerRBACUpgradeableHarness();
25
27
  TransparentUpgradeableProxy proxy = new TransparentUpgradeableProxy(
26
28
  address(impl),
27
29
  address(this),
28
- abi.encodeWithSelector(FeeHandlerRBACUpgradeableMock.initialize.selector, address(this), alice)
30
+ abi.encodeWithSelector(FeeHandlerRBACUpgradeableHarness.initialize.selector, address(this), alice)
29
31
  );
30
32
 
31
- return IFeeHandlerTestHelper(address(proxy));
33
+ feeHandlerRbac = FeeHandlerRBACUpgradeableHarness(address(proxy));
34
+ return IFeeHandler(address(proxy));
32
35
  }
33
36
 
34
37
  function test_setFeeDeposit_Revert_Unauthorized() public {
@@ -36,10 +39,10 @@ contract FeeHandlerRBACUpgradeableTest is FeeHandlerBaseUpgradeableTestCommon {
36
39
  abi.encodeWithSelector(
37
40
  IAccessControl.AccessControlUnauthorizedAccount.selector,
38
41
  charlie,
39
- FeeHandlerRBACUpgradeableMock(address(feeHandlerHelper)).DEFAULT_ADMIN_ROLE()
42
+ feeHandlerRbac.DEFAULT_ADMIN_ROLE()
40
43
  )
41
44
  );
42
45
  vm.prank(charlie);
43
- feeHandlerHelper.setFeeDeposit(bob);
46
+ feeHandler.setFeeDeposit(bob);
44
47
  }
45
48
  }