const abi = require('./erc20abi'); import { CSP } from '../../../types/namespaces/ChainStateProvider'; import { ETHStateProvider } from '../eth/eth'; export class ERC20StateProvider extends ETHStateProvider implements CSP.IChainStateService { contractAddr: string; constructor(chain: string, contractAddr: string) { super(chain); this.contractAddr = contractAddr; } erc20For(network: string) { const web3 = this.getWeb3(network); const contract = new web3.eth.Contract(abi, this.contractAddr); return contract; } async getBalanceForAddress(params: CSP.GetBalanceForAddressParams) { const { network, address } = params; const balance = await this.erc20For(network) .methods.balanceOf(address) .call(); return { confirmed: balance, unconfirmed: 0, balance }; } }