Add doc comments to AbiDecoder

This commit is contained in:
Fabio Berger 2018-08-21 17:39:35 +01:00
parent cc90c806b0
commit c00c477307

View File

@ -15,12 +15,25 @@ import * as _ from 'lodash';
import { addressUtils } from './address_utils';
import { BigNumber } from './configured_bignumber';
/**
* AbiDecoder allows you to decode event logs given a set of supplied contract ABI's. It takes the contract's event
* signature from the ABI and attempts to decode the logs using it.
*/
export class AbiDecoder {
private readonly _methodIds: { [signatureHash: string]: EventAbi } = {};
/**
* Instantiate an AbiDecoder
* @param abiArrays An array of contract ABI's
* @return AbiDecoder instance
*/
constructor(abiArrays: AbiDefinition[][]) {
_.forEach(abiArrays, this.addABI.bind(this));
}
// This method can only decode logs from the 0x & ERC20 smart contracts
/**
* Attempt to decode a log given the ABI's the AbiDecoder knows about.
* @param log The log to attempt to decode
* @return The decoded log if the requisite ABI was available. Otherwise the log unaltered.
*/
public tryToDecodeLogOrNoop<ArgsType extends DecodedLogArgs>(log: LogEntry): LogWithDecodedArgs<ArgsType> | RawLog {
const methodId = log.topics[0];
const event = this._methodIds[methodId];
@ -75,6 +88,10 @@ export class AbiDecoder {
};
}
}
/**
* Add additional ABI definitions to the AbiDecoder
* @param abiArray An array of ABI definitions to add to the AbiDecoder
*/
public addABI(abiArray: AbiDefinition[]): void {
if (_.isUndefined(abiArray)) {
return;