@mstable/protocol
Version:
mStable Contracts
87 lines • 5.53 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("ts-node/register");
require("tsconfig-paths/register");
const config_1 = require("hardhat/config");
const constants_1 = require("@utils/constants");
const math_1 = require("@utils/math");
const generated_1 = require("../types/generated");
const networkAddressFactory_1 = require("./utils/networkAddressFactory");
const signerFactory_1 = require("./utils/signerFactory");
const deploy_utils_1 = require("./utils/deploy-utils");
const feederUtils_1 = require("./utils/feederUtils");
const etherscan_1 = require("./utils/etherscan");
const rewardsUtils_1 = require("./utils/rewardsUtils");
config_1.task("getBytecode-BoostedDualVault").setAction(async () => {
const size = generated_1.BoostedDualVault__factory.bytecode.length / 2 / 1000;
if (size > 24.576) {
console.error(`BoostedDualVault size is ${size} kb: ${size - 24.576} kb too big`);
}
else {
console.log(`BoostedDualVault = ${size} kb`);
}
});
config_1.task("BoostDirector.deploy", "Deploys a new BoostDirector")
.addOptionalParam("stakingToken", "Symbol of the staking token", "MTA", config_1.types.string)
.addOptionalParam("vaults", "Comma separated list of vault underlying token symbols, eg mUSD,mBTC", "mUSD,mBTC,GUSD,BUSD,alUSD,HBTC,TBTC", config_1.types.string)
.addOptionalParam("speed", "Defender Relayer speed param: 'safeLow' | 'average' | 'fast' | 'fastest'", "fast", config_1.types.string)
.setAction(async (taskArgs, hre) => {
const signer = await signerFactory_1.getSigner(hre, taskArgs.speed);
const chain = networkAddressFactory_1.getChain(hre);
const nexusAddress = networkAddressFactory_1.getChainAddress("Nexus", chain);
const boostDirector = await deploy_utils_1.deployContract(new generated_1.BoostDirectorV2__factory(signer), "BoostDirector", [nexusAddress]);
const vaultSymbols = taskArgs.vaults.split(",");
const vaultAddresses = vaultSymbols.map((symbol) => networkAddressFactory_1.resolveAddress(symbol, chain, "vault"));
const tx = await boostDirector.initialize(vaultAddresses);
await deploy_utils_1.logTxDetails(tx, "initialize BoostDirector");
await etherscan_1.verifyEtherscan(hre, {
address: boostDirector.address,
constructorArguments: [nexusAddress],
});
});
config_1.task("Vault.deploy", "Deploys a vault contract")
.addParam("boosted", "True if a mainnet boosted vault", true, config_1.types.boolean)
.addParam("vaultName", "Vault name", undefined, config_1.types.string, false)
.addParam("vaultSymbol", "Vault symbol", undefined, config_1.types.string, false)
.addOptionalParam("stakingToken", "Symbol of staking token. eg MTA, BAL or mUSD", "MTA", config_1.types.string)
.addOptionalParam("stakingType", "'address' or 'feederPool'", "feederPool", config_1.types.string)
.addOptionalParam("rewardsToken", "Symbol of rewards token. eg MTA", "MTA", config_1.types.string)
.addOptionalParam("dualRewardsToken", "Symbol of dual rewards token. eg WMATIC", undefined, config_1.types.string)
.addOptionalParam("priceCoeff", "Price coefficient without 18 decimal places. eg 1 or 4800", 1, config_1.types.int)
.addOptionalParam("boostCoeff", "Boost coefficient", 9, config_1.types.int)
.addOptionalParam("speed", "Defender Relayer speed param: 'safeLow' | 'average' | 'fast' | 'fastest'", "fast", config_1.types.string)
.setAction(async (taskArgs, hre) => {
const chain = networkAddressFactory_1.getChain(hre);
const vaultData = {
boosted: taskArgs.boosted,
name: taskArgs.vaultName,
symbol: taskArgs.vaultSymbol,
priceCoeff: math_1.simpleToExactAmount(taskArgs.priceCoeff),
stakingToken: networkAddressFactory_1.resolveAddress(taskArgs.stakingToken, chain, taskArgs.stakingType),
rewardToken: networkAddressFactory_1.resolveAddress(taskArgs.rewardsToken, chain),
dualRewardToken: taskArgs.dualRewardsToken ? networkAddressFactory_1.resolveAddress(taskArgs.dualRewardsToken, chain) : undefined,
boostCoeff: taskArgs.boostCoeff,
};
await feederUtils_1.deployVault(hre, vaultData);
});
config_1.task("StakedToken.deploy", "Deploys a Staked Token behind a proxy")
.addOptionalParam("rewardsToken", "Symbol of rewards token. eg MTA", "MTA", config_1.types.string)
.addOptionalParam("stakedToken", "Symbol of staked token. eg MTA or mBPT", "MTA", config_1.types.string)
.addOptionalParam("balToken", "Symbol of balancer token. eg BAL", "BAL", config_1.types.string)
.addOptionalParam("name", "Staked Token name", "Staked MTA", config_1.types.string)
.addOptionalParam("symbol", "Staked Token symbol", "stkMTA", config_1.types.string)
.addOptionalParam("cooldown", "Number of seconds for the cooldown period", constants_1.ONE_WEEK.mul(3).toNumber(), config_1.types.int)
.addOptionalParam("proxy", "Deploys a proxy contract", false, config_1.types.boolean)
.setAction(async (taskArgs, hre) => {
const deployer = await signerFactory_1.getSignerAccount(hre, taskArgs.speed);
const stakingTokenData = {
rewardsTokenSymbol: taskArgs.rewardsToken,
stakedTokenSymbol: taskArgs.stakedToken,
balTokenSymbol: taskArgs.balToken,
cooldown: taskArgs.cooldown,
name: taskArgs.name,
symbol: taskArgs.symbol,
};
await rewardsUtils_1.deployStakingToken(stakingTokenData, deployer, hre, taskArgs.proxy);
});
//# sourceMappingURL=deployRewards.js.map