@dydxfoundation/governance
Version:
dYdX governance smart contracts
33 lines (32 loc) • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createSafetyModuleCompensationProposal = void 0;
const types_1 = require("../../types");
const deploy_config_1 = require("../deploy-config");
const get_deployer_address_1 = require("../deploy-config/get-deployer-address");
const hre_1 = require("../hre");
const logging_1 = require("../lib/logging");
const util_1 = require("../lib/util");
async function createSafetyModuleCompensationProposal({ proposalIpfsHashHex, dydxTokenAddress, governorAddress, shortTimelockAddress, rewardsTreasuryAddress, safetyModuleRecoveryAddress, signer, }) {
const hre = (0, hre_1.getHre)();
const deployConfig = (0, deploy_config_1.getDeployConfig)();
const deployer = signer || await (0, get_deployer_address_1.getDeployerSigner)();
const deployerAddress = deployer.address;
(0, logging_1.log)(`Creating proposal to fund the safety module recovery contract, with proposer ${deployerAddress}\n`);
const governor = await new types_1.DydxGovernor__factory(deployer).attach(governorAddress);
const proposalId = await governor.getProposalsCount();
const proposal = [
shortTimelockAddress,
[rewardsTreasuryAddress],
['0'],
['transfer(address,address,uint256)'],
[hre.ethers.utils.defaultAbiCoder.encode(['address', 'address', 'uint256'], [dydxTokenAddress, safetyModuleRecoveryAddress, deployConfig.SM_RECOVERY_OWED_AMOUNT])],
[false],
proposalIpfsHashHex,
];
await (0, util_1.waitForTx)(await governor.create(...proposal));
return {
proposalId,
};
}
exports.createSafetyModuleCompensationProposal = createSafetyModuleCompensationProposal;