UNPKG

996 BJavaScriptView Raw
1class ContractABI {
2 constructor(contract) {
3 this.contract = contract;
4 }
5
6 decodeData(data) {
7 let method = this.contract[data.slice(0, 10)];
8 if (!method && data.startsWith(this.contract.constructor.bytecode)) {
9 method = this.contract.constructor;
10 }
11 if (!method) {
12 return undefined;
13 }
14
15 const tuple = method.decodeData(data);
16 return {
17 name: method.name,
18 fullName: method.fullName,
19 type: method.type,
20 signature: method.signature,
21 array: [...tuple],
22 object: tuple.toObject(),
23 };
24 }
25
26 decodeLog(log) {
27 const event = this.contract[log.topics[0]];
28 if (!event) {
29 return undefined;
30 }
31
32 const tuple = event.decodeLog(log);
33 return {
34 name: event.name,
35 fullName: event.fullName,
36 type: event.type,
37 signature: event.signature,
38 array: [...tuple],
39 object: tuple.toObject(),
40 };
41 }
42}
43
44module.exports = ContractABI;