Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
import { ERC20ProxyContract } from '@0x/abi-gen-wrappers';
import { ERC20Proxy } from '@0x/contract-artifacts';
import { AssetProxyId } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import { ContractAbi } from 'ethereum-types';
import * as _ from 'lodash';
import { assert } from '../utils/assert';
import { _getDefaultContractAddresses } from '../utils/contract_addresses';
/**
* This class includes the functionality related to interacting with the ERC20Proxy contract.
*/
export class ERC20ProxyWrapper {
public abi: ContractAbi = ERC20Proxy.compilerOutput.abi;
public address: string;
private readonly _web3Wrapper: Web3Wrapper;
private readonly _erc20ProxyContract: ERC20ProxyContract;
/**
* Instantiate ERC20ProxyWrapper
* @param web3Wrapper Web3Wrapper instance to use
* @param networkId Desired networkId
* @param address The address of the ERC20Proxy contract. If undefined, will
* default to the known address corresponding to the networkId.
*/
constructor(web3Wrapper: Web3Wrapper, networkId: number, address?: string) {
this._web3Wrapper = web3Wrapper;
this.address = address === undefined ? _getDefaultContractAddresses(networkId).erc20Proxy : address;
this._erc20ProxyContract = new ERC20ProxyContract(
this.address,
this._web3Wrapper.getProvider(),