import {HardhatRuntimeEnvironment} from "hardhat/types"; import {DeployFunction} from "hardhat-deploy/types"; import {deplayOne, loadData} from "../scripts/utils"; import {ZeroAddress} from "ethers"; import { assert } from "chai"; import { expandDecimals } from "../test/shared/utilities"; const deployNFTClaim: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const config = require(`../config/config_${hre.network.name}`); const {cec, rewardPerSecond, vestingDuration} = config.staking; const datas = loadData({ network: hre.network.name }); const esCEC = datas.find((item: any) => item.name === "esCEC"); assert(esCEC, "esCEC not found"); const stakedCecTracker = await deplayOne({ hre, name: "stakedCecTracker", type: "logic", contractName: "RewardTracker", args: [esCEC.address, cec, rewardPerSecond, 18], verify: true, }); const vester = await deplayOne({ hre, name: "vester", type: "logic", contractName: "Vester", args: ["Vested CEC", "veCEC", vestingDuration, esCEC.address, cec, stakedCecTracker.address, ZeroAddress,true], verify: true, }); const rewardRouter = await deplayOne({ hre, name: "stakedCecRouter", type: "logic", contractName: "RewardRouter", args: [cec, stakedCecTracker.address, vester.address], verify: true, }); const stakedCecTrackerContract = await hre.ethers.getContractAt("RewardTracker", stakedCecTracker.address); const esCECContract = await hre.ethers.getContractAt("EsToken", esCEC.address); let tx = await stakedCecTrackerContract.setInPrivateStakingMode(true); await tx.wait(); console.log("==stakedCecTrackerContract setInPrivateStakingMode"); tx = await stakedCecTrackerContract.setHandler(rewardRouter.address, true); await tx.wait(); console.log("==stakedCecTrackerContract setHandler"); // 为了能调用burn方法 tx = await esCECContract.setMinter(vester.address, true); await tx.wait(); console.log("==esCECContract setMinter"); // 添加转账白名单 tx = await esCECContract.setHandler(stakedCecTracker.address, true); await tx.wait(); tx = await esCECContract.setHandler(vester.address, true); await tx.wait(); console.log("==esCECContract setHandler"); // mint esCEC to stakedCecTracker tx = await esCECContract.mint(stakedCecTracker.address, expandDecimals(5000000000, 18)); await tx.wait(); console.log("==esCECContract mint"); }; deployNFTClaim.tags = ["StakingCEC"]; export default deployNFTClaim;