@mstable/protocol
Version:
mStable Contracts
91 lines • 5.8 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable no-restricted-syntax */
const math_1 = require("@utils/math");
const config_1 = require("hardhat/config");
const generated_1 = require("types/generated");
const Comptroller__factory_1 = require("types/generated/factories/Comptroller__factory");
const _20210817_json_1 = __importDefault(require("./balancer-mta-rewards/20210817.json"));
const utils_1 = require("./utils");
const snap_utils_1 = require("./utils/snap-utils");
const signerFactory_1 = require("./utils/signerFactory");
const networkAddressFactory_1 = require("./utils/networkAddressFactory");
config_1.task("sum-rewards", "Totals the rewards in a disperse json file")
.addOptionalParam("speed", "Defender Relayer speed param: 'safeLow' | 'average' | 'fast' | 'fastest'", "fast", config_1.types.string)
.setAction(async () => {
let total = math_1.BN.from(0);
let count = 0;
const rewardsSorted = Object.fromEntries(Object.entries(_20210817_json_1.default).sort(([, a], [, b]) => parseFloat(a) - parseFloat(b)));
for (const [address, amount] of Object.entries(rewardsSorted)) {
total = total.add(math_1.simpleToExactAmount(amount));
count += 1;
console.log(`address ${address} ${amount}`);
}
console.log(`Total ${utils_1.usdFormatter(total)}`);
console.log(`Count ${count}`);
});
config_1.subtask("rewards", "Get Compound and Aave platform reward tokens")
.addOptionalParam("block", "Block number to compare rates at. (default: current block)", 0, config_1.types.int)
.setAction(async (taskArgs, hre) => {
const signer = await signerFactory_1.getSigner(hre, taskArgs.speed);
const block = await snap_utils_1.getBlock(hre.ethers, taskArgs.block);
console.log(`\nGetting platform tokens at block ${block.blockNumber}, ${block.blockTime}`);
await snap_utils_1.getCompTokens(signer, block);
await snap_utils_1.getAaveTokens(signer, block);
await snap_utils_1.getAlcxTokens(signer, block);
});
config_1.task("rewards").setAction(async (_, __, runSuper) => {
await runSuper();
});
config_1.subtask("collect-interest-dist", "Collects and distributes mAsset interest").setAction(async (taskArgs, hre) => {
const signer = await signerFactory_1.getSigner(hre, taskArgs.speed);
const chain = networkAddressFactory_1.getChain(hre);
const collector = generated_1.Collector__factory.connect(networkAddressFactory_1.resolveAddress("Collector", chain), signer);
const tx = await collector.distributeInterest([utils_1.mUSD.address, utils_1.mBTC.address], false);
await utils_1.logTxDetails(tx, `collect fees from mUSD and mBTC`);
});
config_1.task("collect-interest-dist").setAction(async (_, __, runSuper) => {
await runSuper();
});
config_1.task("claim-comp", "Claimed COMP from USDC deposits to Treasury")
.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 compControllerAddress = networkAddressFactory_1.resolveAddress("CompController", chain);
const compController = Comptroller__factory_1.Comptroller__factory.connect(compControllerAddress, signer);
const tx1 = await compController["claimComp(address,address[])"](utils_1.USDC.integrator, [utils_1.USDC.liquidityProvider]);
const receipt = await utils_1.logTxDetails(tx1, "claim COMP");
// Transfer topic
const event = receipt.events.find((e) => e.topics[0] === "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef");
console.log(`Claimed ${utils_1.usdFormatter(math_1.BN.from(event.data))} COMP`);
const unliquidatorAddress = networkAddressFactory_1.resolveAddress("Unliquidator");
const unliquidator = generated_1.Unliquidator__factory.connect(unliquidatorAddress, signer);
const tx2 = await unliquidator.distributeRewards(utils_1.USDC.integrator, utils_1.COMP.address);
await utils_1.logTxDetails(tx2, "claimed COMP to treasury");
});
config_1.task("claim-comp").setAction(async (_, __, runSuper) => {
await runSuper();
});
config_1.task("claim-aave", "Call liquidator to claim stkAAVE")
.addOptionalParam("basset", "Symbol of bAsset in AAVE. eg USDT, WBTC, BUSD or RAI", "USDT", 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 basset = networkAddressFactory_1.resolveToken(taskArgs.basset, chain);
const liquidatorAddress = await networkAddressFactory_1.resolveAddress("Unliquidator", chain);
const unliquidator = generated_1.Unliquidator__factory.connect(liquidatorAddress, signer);
const tx = await unliquidator.claimAndDistributeRewards(basset.integrator, utils_1.stkAAVE.address);
const receipt = await utils_1.logTxDetails(tx, `claim stkAAVE from ${taskArgs.basset} integration`);
// Transfer topic
const event = receipt.events.find((e) => e.topics[0] === "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef");
console.log(`Claimed ${utils_1.usdFormatter(math_1.BN.from(event.data))} stkAAVE from ${basset.integrator} integration`);
});
config_1.task("claim-aave").setAction(async (_, __, runSuper) => {
await runSuper();
});
//# sourceMappingURL=rewards.js.map