Add tryToDecodeLogOrNoOp and _getEventSignatureFromAbiByName on contract_wrapper
This commit is contained in:
@@ -1,13 +1,23 @@
|
||||
import * as _ from 'lodash';
|
||||
import * as Web3 from 'web3';
|
||||
import {Web3Wrapper} from '../web3_wrapper';
|
||||
import {ZeroExError, Artifact} from '../types';
|
||||
import {AbiDecoder} from '../utils/abi_decoder';
|
||||
import {ZeroExError, Artifact, LogWithDecodedArgs, RawLog, ContractEvents} from '../types';
|
||||
import {utils} from '../utils/utils';
|
||||
|
||||
export class ContractWrapper {
|
||||
protected _web3Wrapper: Web3Wrapper;
|
||||
constructor(web3Wrapper: Web3Wrapper) {
|
||||
private _abiDecoder?: AbiDecoder;
|
||||
constructor(web3Wrapper: Web3Wrapper, abiDecoder?: AbiDecoder) {
|
||||
this._web3Wrapper = web3Wrapper;
|
||||
this._abiDecoder = abiDecoder;
|
||||
}
|
||||
protected tryToDecodeLogOrNoOp(log: Web3.LogEntry): LogWithDecodedArgs|RawLog {
|
||||
if (_.isUndefined(this._abiDecoder)) {
|
||||
throw new Error(ZeroExError.NoAbiDecoder);
|
||||
}
|
||||
const logWithDecodedArgs = this._abiDecoder.tryToDecodeLogOrNoOp(log);
|
||||
return logWithDecodedArgs;
|
||||
}
|
||||
protected async _instantiateContractIfExistsAsync<A extends Web3.ContractInstance>(artifact: Artifact,
|
||||
addressIfExists?: string,
|
||||
@@ -16,4 +26,10 @@ export class ContractWrapper {
|
||||
await this._web3Wrapper.getContractInstanceFromArtifactAsync<A>(artifact, addressIfExists);
|
||||
return contractInstance;
|
||||
}
|
||||
protected _getEventSignatureFromAbiByName(abi: Web3.ContractAbi, eventName: ContractEvents): string {
|
||||
const eventAbi = _.filter(abi, {name: eventName})[0] as Web3.EventAbi;
|
||||
const types = _.map(eventAbi.inputs, 'type');
|
||||
const signature = `${eventAbi.name}(${types.join(',')})`;
|
||||
return signature;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user