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"; 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"); const vester = datas.find((item: any) => item.name === "vester"); assert(esCEC, "esCEC not found"); assert(vester, "vester not found"); const stakedCecTracker = await deplayOne({ hre, name: "stakedEsCecTracker", type: "logic", contractName: "RewardTracker", args: ["Staked esCEC", "essCEC"], verify: true, }); const stakedCecDistributor = await deplayOne({ hre, name: "stakedEsCecDistributor", type: "logic", contractName: "RewardDistributor", args: [esCEC.address, stakedCecTracker.address], verify: true, }); const rewardRouter = await deplayOne({ hre, name: "stakedEsCecRouter", type: "logic", contractName: "RewardRouter", args: [esCEC.address, stakedCecTracker.address, ZeroAddress], verify: true, }); const stakedCecTrackerContract = await hre.ethers.getContractAt("RewardTracker", stakedCecTracker.address); const stakedCecDistributorContract = await hre.ethers.getContractAt( "RewardDistributor", stakedCecDistributor.address, ); let tx = await stakedCecTrackerContract.initialize([cec, esCEC.address], stakedCecDistributor.address); await tx.wait(); console.log("==stakedEsCecTrackerContract initialized"); tx = await stakedCecTrackerContract.setInPrivateTransferMode(true); await tx.wait(); console.log("==stakedEsCecTrackerContract setInPrivateTransferMode"); tx = await stakedCecTrackerContract.setInPrivateStakingMode(true); await tx.wait(); console.log("==stakedEsCecTrackerContract setInPrivateStakingMode"); tx = await stakedCecDistributorContract.updateLastDistributionTime(); await tx.wait(); console.log("==stakedEsCecDistributorContract updateLastDistributionTime"); tx = await stakedCecDistributorContract.setTokensPerInterval(rewardPerSecond); await tx.wait(); console.log("==stakedEsCecDistributorContract setTokensPerInterval"); tx = await stakedCecTrackerContract.setHandler(rewardRouter.address, true); await tx.wait(); console.log("==stakedEsCecTrackerContract setHandler"); const esCECContract = await hre.ethers.getContractAt("EsToken", esCEC.address); // 添加转账白名单 tx = await esCECContract.setHandler(stakedCecTracker.address, true); await tx.wait(); tx = await esCECContract.setHandler(stakedCecDistributor.address, true); await tx.wait(); console.log("==esCECContract setHandler"); }; deployNFTClaim.tags = ["StakingEsCEC"]; export default deployNFTClaim;