UNPKG

@phuture/keep3r-cli-job-phuture

Version:
117 lines 4.58 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; 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 undici_1 = require("undici"); const eth_sdk_build_1 = require("../../eth-sdk-build"); const metadata_json_1 = __importDefault(require("./metadata.json")); const constants_json_1 = require("./constants.json"); var OrderType; (function (OrderType) { OrderType["External"] = "external"; OrderType["Internal"] = "internal"; })(OrderType || (OrderType = {})); const getWorkableTxs = async (args) => { const correlationId = (0, cli_utils_1.toKebabCase)(metadata_json_1.default.name); const logMetadata = { job: metadata_json_1.default.name, block: args.advancedBlock, logId: (0, cli_utils_1.makeid)(5), }; const logConsole = (0, 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 { job } = (0, 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; } const { statusCode, body } = await (0, undici_1.request)(constants_json_1.orderUrl); switch (statusCode) { case 200: logConsole.log(`Got 200 OK from Validator`); break; case 404: logConsole.log(`Got 404 Not Found from Validator. There are no orders currently, try again later.`); args.subject.complete(); return; default: logConsole.error(`Expected to get 200 OK from Validator but instead got ${statusCode}`); args.subject.complete(); return; } let tx; const response = (await body.json()); const _a = response.data[0], { type, signs } = _a, order = __rest(_a, ["type", "signs"]); switch (type) { case OrderType.External: { const { external } = order; await job.callStatic.externalSwap(signs, external, { blockTag: args.advancedBlock, }); tx = await job.populateTransaction.externalSwap(signs, external, { nonce: args.keeperNonce, gasLimit: 2000000, type: 2, }); break; } case OrderType.Internal: { const { internal } = order; await job.callStatic.internalSwap(signs, internal, { blockTag: args.advancedBlock, }); tx = await job.populateTransaction.internalSwap(signs, internal, { nonce: args.keeperNonce, gasLimit: 2000000, type: 2, }); break; } default: logConsole.error(`Unexpected order type received`); args.subject.complete(); return; } const workableGroups = Array.from({ length: args.bundleBurst }, (_, index) => ({ targetBlock: args.targetBlock + index, txs: [tx], logId: `${logMetadata.logId}-${(0, cli_utils_1.makeid)(5)}`, })); args.subject.next({ workableGroups, correlationId, }); } catch (_b) { logConsole.warn('Simulation failed, probably in cool-down'); } args.subject.complete(); }; const job = { getWorkableTxs, }; module.exports = job; //# sourceMappingURL=job.js.map