Erc20Service.ts
1 import { ERC20Service as DetailedERC20Service } from '@aave/contract-helpers'; 2 import { Provider } from '@ethersproject/providers'; 3 import { BigNumber, Contract } from 'ethers'; 4 5 import erc20Abi from '../libs/abis/erc20_abi.json'; 6 7 export class ERC20Service { 8 constructor(private readonly getProvider: (chainId: number) => Provider) {} 9 10 private getERC20Service(chainId: number, token: string) { 11 const provider = this.getProvider(chainId); 12 return new Contract(token, erc20Abi, provider); 13 } 14 15 private getDetailedERC20Service(chainId: number) { 16 const provider = this.getProvider(chainId); 17 return new DetailedERC20Service(provider); 18 } 19 20 async getBalance(token: string, user: string, chainId: number) { 21 const erc20Service = this.getERC20Service(chainId, token); 22 const balance: BigNumber = erc20Service.balanceOf(user); 23 return balance; 24 } 25 26 async getTokenInfo(token: string, chainId: number) { 27 const detailedERC20Service = this.getDetailedERC20Service(chainId); 28 return detailedERC20Service.getTokenData(token); 29 } 30 }