@meterio/flex-framework
Version:
A library implements Meter Flex interface
70 lines • 5.68 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.newMethod = void 0;
const revert_reason_1 = require("./revert-reason");
const R = require("./rules");
function newMethod(ctx, addr, coder) {
let value = 0;
let token = 0;
const opts = {};
let cacheTies;
return {
value(val) {
value = R.test(val, R.bigInt, 'arg0');
return this;
},
token(tkn) {
token = R.test(tkn, R.uint32, 'arg0');
return this;
},
caller(caller) {
opts.caller = R.test(caller, R.address, 'arg0').toLowerCase();
return this;
},
gas(gas) {
opts.gas = R.test(gas, R.uint64, 'arg0');
return this;
},
gasPrice(gp) {
opts.gasPrice = R.test(gp, R.bigInt, 'arg0').toString().toLowerCase();
return this;
},
cache(ties) {
cacheTies = R.test(ties, [R.address], 'arg0').map(t => t.toLowerCase());
return this;
},
asClause: (...args) => {
const inputsLen = (coder.definition.inputs || []).length;
R.ensure(inputsLen === args.length, `args count expected ${inputsLen}`);
try {
const data = coder.encode(...args);
return {
to: addr,
token: 0,
value: value.toString().toLowerCase(),
data
};
}
catch (err) {
throw new R.BadParameter(`args can not be encoded (${err.message})`);
}
},
call(...args) {
const clause = this.asClause(...args);
return ctx.driver.explain(Object.assign({ clauses: [clause] }, opts), ctx.trackedHead.id, cacheTies)
.then(outputs => outputs[0])
.then(output => {
if (output.reverted) {
const revertReason = revert_reason_1.decodeRevertReason(output.data);
return Object.assign(Object.assign({}, output), { decoded: { revertReason } });
}
else {
const decoded = coder.decode(output.data);
return Object.assign(Object.assign({}, output), { decoded });
}
});
}
};
}
exports.newMethod = newMethod;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1ld29yay9tZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQW9EO0FBQ3BELDZCQUE0QjtBQUU1QixTQUFnQixTQUFTLENBQ3JCLEdBQVksRUFDWixJQUFZLEVBQ1osS0FBbUI7SUFHbkIsSUFBSSxLQUFLLEdBQW9CLENBQUMsQ0FBQTtJQUM5QixJQUFJLEtBQUssR0FBb0IsQ0FBQyxDQUFBO0lBQzlCLE1BQU0sSUFBSSxHQUlOLEVBQUUsQ0FBQTtJQUVOLElBQUksU0FBK0IsQ0FBQTtJQUVuQyxPQUFPO1FBQ0gsS0FBSyxDQUFDLEdBQUc7WUFDTCxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUNyQyxPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7UUFDRCxLQUFLLENBQUMsR0FBRztZQUNMLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3JDLE9BQU8sSUFBSSxDQUFBO1FBQ2YsQ0FBQztRQUNELE1BQU0sQ0FBQyxNQUFNO1lBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQzdELE9BQU8sSUFBSSxDQUFBO1FBQ2YsQ0FBQztRQUNELEdBQUcsQ0FBQyxHQUFHO1lBQ0gsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3hDLE9BQU8sSUFBSSxDQUFBO1FBQ2YsQ0FBQztRQUNELFFBQVEsQ0FBQyxFQUFFO1lB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
;