UNPKG

@meterio/flex-framework

Version:

A library implements Meter Flex interface

70 lines 5.68 kB
"use strict"; 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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