@phuture/keep3r-cli-job-phuture-savings-vault
Version:
Phuture Savings Vault CLI Job for The Keep3r Network
74 lines • 2.85 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const cli_utils_1 = require("@keep3r-network/cli-utils");
const eth_sdk_build_1 = require("../../eth-sdk-build");
const metadata_json_1 = __importDefault(require("./metadata.json"));
const getWorkableTxs = async (args) => {
const correlationId = cli_utils_1.toKebabCase(metadata_json_1.default.name);
const logMetadata = {
job: metadata_json_1.default.name,
block: args.advancedBlock,
logId: cli_utils_1.makeid(5),
};
const logConsole = cli_utils_1.prelog(logMetadata);
if (args.skipIds.includes(correlationId)) {
logConsole.log(`Skipping job`);
args.subject.complete();
return;
}
logConsole.log(`Trying to work`);
const signer = args.fork.ethersProvider.getSigner(args.keeperAddress);
const { harvestingJob: job, usdcSavingsVault } = eth_sdk_build_1.getMainnetSdk(signer);
try {
const paused = await job.paused({ blockTag: args.advancedBlock });
const notOrNull = paused ? `` : `not`;
logConsole.warn(`Job ${job.address} is ${notOrNull} paused`);
if (paused) {
args.subject.complete();
return;
}
if (!(await job.canHarvest(usdcSavingsVault.address))) {
logConsole.log(`Timeout between two harvests hasn't passed, try again later!`);
args.subject.complete();
return;
}
let tx;
if (await job.isAccountSettlementRequired(usdcSavingsVault.address)) {
logConsole.log(`Account settlement is required!`);
tx = await job.populateTransaction.settleAccount(usdcSavingsVault.address, {
nonce: args.keeperNonce,
gasLimit: 700000,
type: 2,
});
}
else {
await job.callStatic.harvest(usdcSavingsVault.address, { blockTag: args.advancedBlock });
tx = await job.populateTransaction.harvest(usdcSavingsVault.address, {
nonce: args.keeperNonce,
gasLimit: 2500000,
type: 2,
});
}
const workableGroups = Array.from({ length: args.bundleBurst }, (_, index) => ({
targetBlock: args.targetBlock + index,
txs: [tx],
logId: `${logMetadata.logId}-${cli_utils_1.makeid(5)}`,
}));
args.subject.next({
workableGroups,
correlationId,
});
}
catch (_a) {
logConsole.warn('Simulation failed, probably in cool-down');
}
args.subject.complete();
};
const job = {
getWorkableTxs,
};
module.exports = job;
//# sourceMappingURL=job.js.map