UNPKG

@venusprotocol/governance-contracts

Version:
83 lines 5.26 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const hardhat_1 = require("hardhat"); const deploymentConfig_1 = require("../helpers/deploy/deploymentConfig"); const deploymentUtils_1 = require("../helpers/deploy/deploymentUtils"); const utils_1 = require("../helpers/utils"); const BNB_MAINNET_GUARDIAN = "0x1C2CAc6ec528c20800B2fe734820D87b581eAA6B"; const BNB_TESTNET_GUARDIAN = "0x2Ce1d0ffD7E869D9DF33e28552b12DdDed326706"; const configureCommands = (target, hre) => __awaiter(void 0, void 0, void 0, function* () { const networkName = hre.network.name; const commands = yield Promise.all(deploymentConfig_1.config[networkName].methods.map((entry) => __awaiter(void 0, void 0, void 0, function* () { const { method, args } = entry; return { contract: target, signature: method, argTypes: (0, utils_1.getArgTypesFromSignature)(method), parameters: args, value: 0, }; }))); return commands.flat(); }); const configureAccessControls = (methods, accessControlManagerAddress, callerAddress, targetAddress) => __awaiter(void 0, void 0, void 0, function* () { const commands = yield Promise.all(methods.map((method) => __awaiter(void 0, void 0, void 0, function* () { return [ { contract: accessControlManagerAddress, signature: "giveCallPermission(address,string,address)", argTypes: ["address", "string", "address"], parameters: [targetAddress, method, callerAddress], value: 0, }, ]; }))); return commands.flat(); }); const func = function (hre) { return __awaiter(this, void 0, void 0, function* () { const { deployments, getNamedAccounts } = hre; const { deploy } = deployments; const { deployer } = yield getNamedAccounts(); const acmAddress = (yield hardhat_1.ethers.getContract("AccessControlManager")).address; const normalTimelockAddress = (yield hardhat_1.ethers.getContract("NormalTimelock")).address; const fastTrackTimelockAddress = (yield hardhat_1.ethers.getContract("FastTrackTimelock")).address; const criticalTimelockAddress = (yield hardhat_1.ethers.getContract("CriticalTimelock")).address; const BNB_GUARDIAN = hre.network.name === "bscmainnet" ? BNB_MAINNET_GUARDIAN : BNB_TESTNET_GUARDIAN; const OmnichainProposalSender = yield deploy("OmnichainProposalSender", { from: deployer, args: [yield (0, deploymentUtils_1.getLzEndpoint)(hre.network.name), acmAddress], log: true, autoMine: true, }); const omnichainProposalSender = yield hardhat_1.ethers.getContractAt("OmnichainProposalSender", OmnichainProposalSender.address, hardhat_1.ethers.provider.getSigner(deployer)); if ((yield omnichainProposalSender.owner()) === deployer) { const tx = yield omnichainProposalSender.transferOwnership(normalTimelockAddress); yield tx.wait(); console.log(`Omnichain Proposal Sender ${deployer} sucessfully changed to ${normalTimelockAddress}.`); } const commands = [ ...(yield configureAccessControls(deploymentConfig_1.OmnichainProposalSenderNormalMethods, acmAddress, normalTimelockAddress, OmnichainProposalSender.address)), ...(yield configureAccessControls(deploymentConfig_1.OmnichainProposalSenderFasttrackMethods, acmAddress, fastTrackTimelockAddress, OmnichainProposalSender.address)), ...(yield configureAccessControls(deploymentConfig_1.OmnichainProposalSenderCriticalMethods, acmAddress, criticalTimelockAddress, OmnichainProposalSender.address)), ...(yield configureAccessControls(deploymentConfig_1.OmnichainProposalSenderGuardianMethods, acmAddress, BNB_GUARDIAN, OmnichainProposalSender.address)), ...(yield configureCommands(OmnichainProposalSender.address, hre)), ]; console.log("Please propose a VIP with the following commands:"); console.log(JSON.stringify(commands.map(c => ({ target: c.contract, signature: c.signature, params: c.parameters, value: c.value })))); }); }; func.tags = ["OmnichainProposalSender"]; func.skip = (hre) => __awaiter(void 0, void 0, void 0, function* () { return !(hre.network.name === "bsctestnet" || hre.network.name === "bscmainnet") && hre.network.name !== "hardhat"; }); func.dependencies = ["mocks"]; exports.default = func; //# sourceMappingURL=003-omnichain-source.js.map