UNPKG

864 BJavaScriptView Raw
1const JSBI = require('jsbi');
2const lodash = require('lodash');
3const { assert, format } = require('../util');
4const BaseCoder = require('./BaseCoder');
5const { padBuffer, decodeUInt256 } = require('./util');
6
7class BoolCoder extends BaseCoder {
8 static from({ type, name }) {
9 if (type !== 'bool') {
10 return undefined;
11 }
12 return new this({ type, name });
13 }
14
15 /**
16 * @param value {*}
17 * @return {Buffer}
18 */
19 encode(value) {
20 assert(lodash.isBoolean(value), {
21 message: 'unexpected type',
22 expect: 'boolean',
23 got: value,
24 coder: this,
25 });
26
27 return padBuffer(format.hex(value));
28 }
29
30 /**
31 * @param stream {HexStream}
32 * @return {boolean}
33 */
34 decode(stream) {
35 return JSBI.notEqual(decodeUInt256(stream), JSBI.BigInt(0));
36 }
37}
38
39module.exports = BoolCoder;