simonflex-framework
Version:
A library implements Meter Flex interface
69 lines • 5.61 kB
JavaScript
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
;