UNPKG

@dydxfoundation/governance

Version:
60 lines (59 loc) 3.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deploySafetyModuleRecovery = 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 logging_1 = require("../lib/logging"); const util_1 = require("../lib/util"); const deploy_upgradeable_1 = require("./helpers/deploy-upgradeable"); async function deploySafetyModuleRecovery({ startStep = 0, onlyStep, dydxTokenAddress, shortTimelockAddress, rewardsTreasuryAddress, safetyModuleNewImplAddress, safetyModuleRecoveryAddress, safetyModuleRecoveryProxyAdminAddress, }) { (0, logging_1.log)('Beginning safety module recovery deployment\n'); const deployConfig = (0, deploy_config_1.getDeployConfig)(); const deployer = await (0, get_deployer_address_1.getDeployerSigner)(); const deployerAddress = deployer.address; (0, logging_1.log)(`Beginning deployment with deployer ${deployerAddress}\n`); const shortTimelock = new types_1.Executor__factory(deployer).attach(shortTimelockAddress); let safetyModuleNewImpl; let safetyModuleRecovery; let safetyModuleRecoveryProxyAdmin; if (onlyStep ? onlyStep === 1 : startStep <= 1) { (0, logging_1.log)('Step 1. Deploy new safety module implementation contract.'); safetyModuleNewImpl = await new types_1.SafetyModuleV2__factory(deployer).deploy(dydxTokenAddress, dydxTokenAddress, rewardsTreasuryAddress, deployConfig.SM_RECOVERY_DISTRIBUTION_START, deployConfig.SM_RECOVERY_DISTRIBUTION_END); await (0, util_1.waitForTx)(safetyModuleNewImpl.deployTransaction); safetyModuleNewImplAddress = safetyModuleNewImpl.address; } else { if (!safetyModuleNewImplAddress) { throw new Error('Expected parameter safetyModuleNewImplAddress to be specified.'); } safetyModuleNewImpl = new types_1.SafetyModuleV2__factory(deployer).attach(safetyModuleNewImplAddress); } if (onlyStep ? onlyStep === 2 : startStep <= 2) { (0, logging_1.log)('Step 2. Deploy the upgradeable Safety Module recovery contract.'); [safetyModuleRecovery, , safetyModuleRecoveryProxyAdmin] = await (0, deploy_upgradeable_1.deployUpgradeable)(types_1.SM2Recovery__factory, deployer, [dydxTokenAddress], []); safetyModuleRecoveryAddress = safetyModuleRecovery.address; safetyModuleRecoveryProxyAdminAddress = safetyModuleRecoveryProxyAdmin.address; } else { if (!safetyModuleRecoveryAddress) { throw new Error('Expected parameter safetyModuleRecoveryAddress to be specified.'); } if (!safetyModuleRecoveryProxyAdminAddress) { throw new Error('Expected parameter safetyModuleRecoveryProxyAdminAddress to be specified.'); } safetyModuleRecovery = new types_1.SM2Recovery__factory(deployer).attach(safetyModuleRecoveryAddress); safetyModuleRecoveryProxyAdmin = new types_1.ProxyAdmin__factory(deployer).attach(safetyModuleRecoveryProxyAdminAddress); } if (onlyStep ? onlyStep === 3 : startStep <= 3) { (0, logging_1.log)('Step 3. Transfer SM2Recovery proxy admin ownership to the short timelock.'); await (0, util_1.waitForTx)(await safetyModuleRecoveryProxyAdmin.transferOwnership(shortTimelock.address)); } (0, logging_1.log)('\n=== SAFETY MODULE RECOVERY DEPLOYMENT COMPLETE ===\n'); return { safetyModuleNewImpl, safetyModuleRecovery, safetyModuleRecoveryProxyAdmin, }; } exports.deploySafetyModuleRecovery = deploySafetyModuleRecovery;