@mstable/protocol
Version:
mStable Contracts
80 lines • 6.41 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 signerFactory_1 = require("./utils/signerFactory");
const deploy_utils_1 = require("./utils/deploy-utils");
const networkAddressFactory_1 = require("./utils/networkAddressFactory");
const etherscan_1 = require("./utils/etherscan");
config_1.task("SaveWrapper.deploy", "Deploy a new SaveWrapper")
.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 signer = await signerFactory_1.getSigner(hre, taskArgs.speed);
const nexusAddress = networkAddressFactory_1.resolveAddress("Nexus", chain);
const constructorArguments = [nexusAddress];
const wrapper = await deploy_utils_1.deployContract(new generated_1.SaveWrapper__factory(signer), "SaveWrapper", constructorArguments);
await etherscan_1.verifyEtherscan(hre, {
address: wrapper.address,
contract: "contracts/savings/peripheral/SaveWrapper.sol:SaveWrapper",
constructorArguments,
});
});
config_1.task("SaveWrapper.approveMasset", "Sets approvals for a new mAsset")
.addParam("masset", "Token symbol of the mAsset. eg mUSD or mBTC", undefined, config_1.types.string, false)
.addParam("bassets", "Comma separated symbols of the base assets. eg USDC,DAI,USDT,sUSD", undefined, config_1.types.string, false)
.addParam("fassets", "Comma separated symbols of the Feeder Pool assets. eg GUSD,BUSD,alUSD,FEI,HBTC", undefined, config_1.types.string, false)
.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 signer = await signerFactory_1.getSigner(hre, taskArgs.speed);
const wrapperAddress = networkAddressFactory_1.resolveAddress("SaveWrapper", chain);
const wrapper = generated_1.SaveWrapper__factory.connect(wrapperAddress, signer);
const mAssetToken = networkAddressFactory_1.resolveToken(taskArgs.masset, chain);
const bAssetSymbols = taskArgs.bassets.split(",");
const bAssetAddresses = bAssetSymbols.map((symbol) => networkAddressFactory_1.resolveAddress(symbol, chain));
const fAssetSymbols = taskArgs.fassets.split(",");
const fAssetAddresses = fAssetSymbols.map((symbol) => networkAddressFactory_1.resolveAddress(symbol, chain, "address"));
const feederPoolAddresses = fAssetSymbols.map((symbol) => networkAddressFactory_1.resolveAddress(symbol, chain, "feederPool"));
const tx = await wrapper["approve(address,address[],address[],address[],address,address)"](mAssetToken.address, bAssetAddresses, feederPoolAddresses, fAssetAddresses, mAssetToken.savings, mAssetToken.vault);
await deploy_utils_1.logTxDetails(tx, `SaveWrapper approve mAsset ${taskArgs.masset}, bAssets ${taskArgs.bassets} and feeder pools ${taskArgs.fassets}`);
});
config_1.task("SaveWrapper.approveMulti", "Sets approvals for multiple tokens/a single spender")
.addParam("tokens", "Comma separated symbols of the tokens that is being approved. eg USDC,DAI,USDT,sUSD", undefined, config_1.types.string, false)
.addParam("spender", "Token symbol of the mAsset or address type. eg mUSD, mBTC, feederPool, savings or vault", undefined, config_1.types.string, false)
.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 signer = await signerFactory_1.getSigner(hre, taskArgs.speed);
const wrapperAddress = networkAddressFactory_1.resolveAddress("SaveWrapper", chain);
const wrapper = generated_1.SaveWrapper__factory.connect(wrapperAddress, signer);
const tokenSymbols = taskArgs.tokens.split(",");
const tokenAddresses = tokenSymbols.map((symbol) => networkAddressFactory_1.resolveAddress(symbol, chain));
const spenderAddress = ["feederPool", "savings", "vault"].includes(taskArgs.spender)
? networkAddressFactory_1.resolveAddress(taskArgs.token, chain, taskArgs.spender) // token is mUSD or mBTC
: networkAddressFactory_1.resolveAddress(taskArgs.spender, chain); // spender is mUSD or mBTC
const tx = await wrapper["approve(address[],address)"](tokenAddresses, spenderAddress);
await deploy_utils_1.logTxDetails(tx, "Approve multiple tokens/single spender");
});
config_1.task("SaveWrapper.approve", "Sets approvals for a single token/spender")
.addParam("token", "Symbol of the token that is being approved. eg USDC, WBTC, FEI, HBTC, mUSD, imUSD", undefined, config_1.types.string, false)
.addParam("spender", "Token symbol of the mAsset or address type. eg mUSD, mBTC, feederPool, savings or vault", undefined, config_1.types.string, false)
.addOptionalParam("speed", "Defender Relayer speed param: 'safeLow' | 'average' | 'fast' | 'fastest'", "fast", config_1.types.string)
.setAction(async (taskArgs, hre) => {
if (!taskArgs.spender) {
throw Error(`spender must be a mAsset symbol, eg mUSD or mBTC, or an address type of a mAsset, eg feederPool, savings or vault`);
}
const chain = networkAddressFactory_1.getChain(hre);
const signer = await signerFactory_1.getSigner(hre, taskArgs.speed);
const wrapperAddress = networkAddressFactory_1.resolveAddress("SaveWrapper", chain);
const wrapper = generated_1.SaveWrapper__factory.connect(wrapperAddress, signer);
const tokenAddress = networkAddressFactory_1.resolveAddress(taskArgs.token, chain);
const spenderAddress = ["feederPool", "savings", "vault"].includes(taskArgs.spender)
? networkAddressFactory_1.resolveAddress(taskArgs.token, chain, taskArgs.spender) // token is mUSD or mBTC
: networkAddressFactory_1.resolveAddress(taskArgs.spender, chain); // spender is mUSD or mBTC
const tx = await wrapper["approve(address,address)"](tokenAddress, spenderAddress);
await deploy_utils_1.logTxDetails(tx, "Approve single token/spender");
});
//# sourceMappingURL=SaveWrapper.js.map