-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDeployAll.s.sol
More file actions
55 lines (42 loc) · 2.42 KB
/
DeployAll.s.sol
File metadata and controls
55 lines (42 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.28;
import {Script, console} from "forge-std/Script.sol";
import {MetaTokenDistributor} from "src/tokenDistribution/MetaTokenDistributor.sol";
import {Vesting} from "src/tokenDistribution/vesting/Vesting.sol";
import {VestingParams} from "src/tokenDistribution/vesting/VestingParams.sol";
import {Beneficiary} from "src/tokenDistribution/utils/Common.sol";
/**
* @title First deploy
* @author Pavel Naydanov
* @notice Deploy VestingParams, MetaTokenDistributor, MetaLamp token.
*/
contract DeployAllScript is Script {
address constant TEAM_BENEFICIARY_ADDRESS = 0x9b5DCAA3002d77fB9dEDfc1006838d08977a3432;
uint256 constant TEAM_BENEFICIARY_AMOUNT = 100_000_000e18;
address constant LIQUIDITY_BENEFICIARY_ADDRESS = 0x9b5DCAA3002d77fB9dEDfc1006838d08977a3432;
uint256 constant LIQUIDITY_BENEFICIARY_AMOUNT = 287_500_000e18;
VestingParams public vestingParams;
Vesting public vesting;
MetaTokenDistributor public distributor;
function run() public {
// Adding 5 minutes to block.timestamp to account for potential transaction confirmation delays in BNB Smart Chain,
// ensuring startTime is set in the future relative to the block in which the transaction is included.
uint64 startTime = uint64(block.timestamp + 5 minutes);
Beneficiary[] memory teamBeneficiaries = new Beneficiary[](1);
teamBeneficiaries[0] = Beneficiary({account: TEAM_BENEFICIARY_ADDRESS, amount: TEAM_BENEFICIARY_AMOUNT});
Beneficiary[] memory liquidityBeneficiaries = new Beneficiary[](1);
liquidityBeneficiaries[0] =
Beneficiary({account: LIQUIDITY_BENEFICIARY_ADDRESS, amount: LIQUIDITY_BENEFICIARY_AMOUNT});
vm.startBroadcast();
vestingParams = new VestingParams(startTime, teamBeneficiaries, liquidityBeneficiaries);
vesting = new Vesting();
distributor = new MetaTokenDistributor(address(vestingParams), address(vesting));
vm.stopBroadcast();
console.log("------------------ Deployed contracts --------------------");
console.log("MetaLamp token: ", address(distributor.getMetaAddress()));
console.log("VestingParams address", address(vestingParams));
console.log("MetaToken distributor: ", address(distributor));
console.log("------------------ Deployment info -----------------------");
console.log("Chain ID: ", block.chainid);
}
}