@mstable/protocol
Version:
mStable Contracts
92 lines • 4.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
require("ts-node/register");
require("tsconfig-paths/register");
const config_1 = require("hardhat/config");
const generated_1 = require("types/generated");
const deploy_utils_1 = require("./utils/deploy-utils");
const signerFactory_1 = require("./utils/signerFactory");
const networkAddressFactory_1 = require("./utils/networkAddressFactory");
const tokens_1 = require("./utils/tokens");
const etherscan_1 = require("./utils/etherscan");
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const approveUnwrapperTokens = async (chain, unwrapper, governor) => {
// Mainnet and Polygon
const fraxFeederPool = networkAddressFactory_1.resolveAddress("FRAX", chain, "feederPool");
const musdAddress = networkAddressFactory_1.resolveAddress("mUSD", chain);
let routers = [];
let tokens = [];
if (chain === tokens_1.Chain.polygon) {
routers = [fraxFeederPool];
tokens = [musdAddress];
}
else {
const alusdFeederPool = networkAddressFactory_1.resolveAddress("alUSD", chain, "feederPool");
const gusdFeederPool = networkAddressFactory_1.resolveAddress("GUSD", chain, "feederPool");
const busdFeederPool = networkAddressFactory_1.resolveAddress("BUSD", chain, "feederPool");
const raiFeederPool = networkAddressFactory_1.resolveAddress("RAI", chain, "feederPool");
const feiFeederPool = networkAddressFactory_1.resolveAddress("FEI", chain, "feederPool");
const hbtcFeederPool = networkAddressFactory_1.resolveAddress("HBTC", chain, "feederPool");
const tbtcv2FeederPool = networkAddressFactory_1.resolveAddress("tBTCv2", chain, "feederPool");
const mbtcAddress = networkAddressFactory_1.resolveAddress("mBTC", chain);
routers = [
musdAddress,
alusdFeederPool,
gusdFeederPool,
busdFeederPool,
raiFeederPool,
feiFeederPool,
mbtcAddress,
hbtcFeederPool,
tbtcv2FeederPool,
];
tokens = [musdAddress, musdAddress, musdAddress, musdAddress, musdAddress, musdAddress, mbtcAddress, mbtcAddress, mbtcAddress];
}
// approve tokens for router
await unwrapper.connect(governor).approve(routers, tokens);
};
config_1.task("deploy-unwrapper-single", "Deploy Unwrapper without a proxy")
.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 nexus = networkAddressFactory_1.resolveAddress("Nexus", chain);
const constructorArguments = [nexus];
// Deploy step 1 - Deploy Unwrapper
const unwrapper = await deploy_utils_1.deployContract(new generated_1.Unwrapper__factory(signer), "Unwrapper", constructorArguments);
await etherscan_1.verifyEtherscan(hre, {
address: unwrapper.address,
contract: "contracts/savings/peripheral/Unwrapper.sol:Unwrapper",
constructorArguments,
});
// Deploy step 2 - Approve tokens
// approveUnwrapperTokens(chain, unwrapper, signer)
});
config_1.task("deploy-unwrapper-proxy", "Deploy Unwrapper as a proxy on mainnet")
.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 nexus = networkAddressFactory_1.resolveAddress("Nexus", chain);
const proxyAdminAddress = networkAddressFactory_1.resolveAddress("DelayedProxyAdmin", chain);
const constructorArguments = [nexus];
// Deploy step 1 - Deploy Unwrapper
const unwrapperImpl = await deploy_utils_1.deployContract(new generated_1.Unwrapper__factory(signer), "Unwrapper", constructorArguments);
const initializeData = [];
const proxy = await deploy_utils_1.deployContract(new generated_1.AssetProxy__factory(signer), "AssetProxy", [
unwrapperImpl.address,
proxyAdminAddress,
initializeData,
]);
const unwrapper = new generated_1.Unwrapper__factory(signer).attach(proxy.address);
await etherscan_1.verifyEtherscan(hre, {
address: unwrapperImpl.address,
contract: "contracts/savings/peripheral/Unwrapper.sol:Unwrapper",
constructorArguments,
});
console.log(`Set Unwrapper in the networkAddressFactory to ${unwrapper.address}`);
// Deploy step 2 - Approve tokens
// approveUnwrapperTokens(chain, unwrapper, signer)
});
module.exports = {};
//# sourceMappingURL=deployUnwrapper.js.map