Skip to content

Commit 5324f6a

Browse files
committed
fix: move VestingImpl to constructor
1 parent 972bf33 commit 5324f6a

4 files changed

Lines changed: 20 additions & 7 deletions

File tree

script/DeployAll.s.sol

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ pragma solidity 0.8.28;
44
import {Script, console} from "forge-std/Script.sol";
55

66
import {MetaTokenDistributor} from "src/tokenDistribution/MetaTokenDistributor.sol";
7+
import {Vesting} from "src/tokenDistribution/vesting/Vesting.sol";
78
import {VestingParams} from "src/tokenDistribution/vesting/VestingParams.sol";
89
import {Beneficiary, VestingType} from "src/tokenDistribution/utils/Common.sol";
910

@@ -20,6 +21,7 @@ contract DeployAllScript is Script {
2021
uint256 constant LIQUIDITY_BENEFICIARY_AMOUNT = 287_500_000e18;
2122

2223
VestingParams public vestingParams;
24+
Vesting public vesting;
2325
MetaTokenDistributor public distributor;
2426

2527
function run() public {
@@ -36,7 +38,8 @@ contract DeployAllScript is Script {
3638
vm.startBroadcast();
3739

3840
vestingParams = new VestingParams(startTime, teamBeneficiaries, liquidityBeneficiaries);
39-
distributor = new MetaTokenDistributor(address(vestingParams));
41+
vesting = new Vesting();
42+
distributor = new MetaTokenDistributor(address(vestingParams), address(vesting));
4043

4144
vm.stopBroadcast();
4245

src/tokenDistribution/MetaTokenDistributor.sol

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,14 @@ contract MetaTokenDistributor is IMetaTokenDistributor {
4444
_;
4545
}
4646

47-
constructor(address vestingParams) {
47+
constructor(address vestingParams, address vestingImpl) {
4848
if (address(vestingParams) == address(0)) {
4949
revert ZeroAddress();
5050
}
5151

5252
_vestingParams = IVestingParams(vestingParams);
5353

54-
_vestingImpl = address(new Vesting());
54+
_vestingImpl = vestingImpl;
5555
_META = IERC20(address(new MetaToken(address(this))));
5656

5757
assert(_META.balanceOf(address(this)) == _META.totalSupply());
@@ -100,4 +100,9 @@ contract MetaTokenDistributor is IMetaTokenDistributor {
100100
function getVestingParamsAddress() external view returns (address) {
101101
return address(_vestingParams);
102102
}
103+
104+
/// @notice Returns address of VestingImpl contract
105+
function getVestingImplAddress() external view returns (address) {
106+
return _vestingImpl;
107+
}
103108
}

src/tokenDistribution/interfaces/IMetaTokenDistributor.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ interface IMetaTokenDistributor {
2323
function getMETAAddress() external view returns (address);
2424
function getVestingAddress(VestingType vestingType) external view returns (address);
2525
function getVestingParamsAddress() external view returns (address);
26+
function getVestingImplAddress() external view returns (address);
2627
}

test/tokenDistribution/MetaTokenDistributor.t.sol

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {Test, console} from "forge-std/Test.sol";
55
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
66

77
import {MetaTokenDistributor, IMetaTokenDistributor} from "src/tokenDistribution/MetaTokenDistributor.sol";
8+
import {Vesting} from "src/tokenDistribution/vesting/Vesting.sol";
89
import {VestingParams} from "src/tokenDistribution/vesting/VestingParams.sol";
910
import {Beneficiary, VestingType, Schedule} from "src/tokenDistribution/utils/Common.sol";
1011

@@ -13,6 +14,7 @@ contract MetaTokenDistributorTest is Test {
1314
uint64 public vestingStartTime;
1415

1516
VestingParams vestingParams;
17+
Vesting vestingImpl;
1618
MetaTokenDistributor distributor;
1719

1820
address teamBeneficiary1;
@@ -24,29 +26,31 @@ contract MetaTokenDistributorTest is Test {
2426
(Beneficiary[] memory teamBeneficiaries, Beneficiary[] memory liquidityBeneficiaries) = _generateBeneficiaries();
2527

2628
vestingParams = new VestingParams(vestingStartTime, teamBeneficiaries, liquidityBeneficiaries);
27-
distributor = new MetaTokenDistributor(address(vestingParams));
29+
vestingImpl = new Vesting();
30+
distributor = new MetaTokenDistributor(address(vestingParams), address(vestingImpl));
2831
}
2932

3033
// region - Deploy -
3134

3235
function test_deploy() external view {
3336
assertEq(distributor.getVestingParamsAddress(), address(vestingParams));
3437
assertNotEq(distributor.getMETAAddress(), address(0));
38+
assertNotEq(distributor.getVestingImplAddress(), address(0));
3539
}
3640

3741
function test_deploy_emitMetaTokenDeployed() external {
3842
vm.expectEmit(true, true, true, false); // data is not checking
3943
emit IMetaTokenDistributor.MetaTokenDeployed(address(0));
4044

41-
distributor = new MetaTokenDistributor(address(vestingParams));
45+
distributor = new MetaTokenDistributor(address(vestingParams), address(vestingImpl));
4246
}
4347

4448
function test_deploy_startTimeEqualBlockTimestamp() external {
4549
vestingStartTime = uint64(block.timestamp);
4650
(Beneficiary[] memory teamBeneficiaries, Beneficiary[] memory liquidityBeneficiaries) = _generateBeneficiaries();
4751

4852
vestingParams = new VestingParams(vestingStartTime, teamBeneficiaries, liquidityBeneficiaries);
49-
distributor = new MetaTokenDistributor(address(vestingParams));
53+
distributor = new MetaTokenDistributor(address(vestingParams), address(vestingImpl));
5054

5155
address teamVesting = distributor.startVesting(VestingType.TEAM);
5256

@@ -59,7 +63,7 @@ contract MetaTokenDistributorTest is Test {
5963
function test_deploy_revertIfZeroAddress() external {
6064
vm.expectRevert(IMetaTokenDistributor.ZeroAddress.selector);
6165

62-
distributor = new MetaTokenDistributor(address(0));
66+
distributor = new MetaTokenDistributor(address(0), address(vestingImpl));
6367
}
6468

6569
// endregion

0 commit comments

Comments
 (0)