@phuture/keep3r-cli-job-phuture
Version:
Phuture CLI Job for The Keep3r Network
117 lines • 4.58 kB
JavaScript
;
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