UNPKG

simonflex-framework

Version:

A library implements Meter Flex interface

69 lines 5.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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({}, output, { decoded: { revertReason } }); } else { const decoded = coder.decode(output.data); return Object.assign({}, output, { decoded }); } }); } }; } exports.newMethod = newMethod; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1ld29yay9tZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxtREFBb0Q7QUFDcEQsNkJBQTRCO0FBRTVCLFNBQWdCLFNBQVMsQ0FDckIsR0FBWSxFQUNaLElBQVksRUFDWixLQUFtQjtJQUduQixJQUFJLEtBQUssR0FBb0IsQ0FBQyxDQUFBO0lBQzlCLElBQUksS0FBSyxHQUFvQixDQUFDLENBQUE7SUFDOUIsTUFBTSxJQUFJLEdBSU4sRUFBRSxDQUFBO0lBRU4sSUFBSSxTQUErQixDQUFBO0lBRW5DLE9BQU87UUFDSCxLQUFLLENBQUMsR0FBRztZQUNMLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3JDLE9BQU8sSUFBSSxDQUFBO1FBQ2YsQ0FBQztRQUNELEtBQUssQ0FBQyxHQUFHO1lBQ0wsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDckMsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsTUFBTSxDQUFDLE1BQU07WUFDVCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDN0QsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsR0FBRyxDQUFDLEdBQUc7WUFDSCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDeEMsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsUUFBUSxDQUFDLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDckUsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsS0FBSyxDQUFDLElBQWM7WUFDaEIsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO1lBQ3ZFLE9BQU8sSUFBSSxDQUFBO1FBQ2YsQ0FBQztRQUNELFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDbEIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUE7WUFDeEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSx1QkFBdUIsU0FBUyxFQUFFLENBQUMsQ0FBQTtZQUN2RSxJQUFJO2dCQUNBLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtnQkFDbEMsT0FBTztvQkFDSCxFQUFFLEVBQUUsSUFBSTtvQkFDUixLQUFLLEVBQUUsQ0FBQztvQkFDUixLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRTtvQkFDckMsSUFBSTtpQkFDUCxDQUFBO2FBQ0o7WUFBQyxPQUFPLEdBQUcsRUFBRTtnQkFDVixNQUFNLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUE7YUFDdkU7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsSUFBSTtZQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtZQUNyQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxpQkFFakIsT0FBTyxFQUFFLENBQUMsTUFBYSxDQUFDLElBQ3JCLElBQUksR0FFWCxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFDbEIsU0FBUyxDQUNaO2lCQUNJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNYLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsTUFBTSxZQUFZLEdBQUcsa0NBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO29CQUNwRCx5QkFBWSxNQUFNLElBQUUsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUU7aUJBQ2xEO3FCQUFNO29CQUNILE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO29CQUN6Qyx5QkFBWSxNQUFNLElBQUUsT0FBTyxJQUFFO2lCQUNoQztZQUNMLENBQUMsQ0FBQyxDQUFBO1FBQ1YsQ0FBQztLQUNKLENBQUE7QUFDTCxDQUFDO0FBOUVELDhCQThFQyJ9