import { Contract } from 'ethers'; import erc20Abi from '../abis/EsToken.json'; import { STAKING_ADDRESSES } from '@/configs/configchain'; const chainId = parseInt(import.meta.env.VUE_APP_STAKING_CHAIN); export class ERC20 { constructor(_chainInstance) { this.bc = _chainInstance; const cfg = STAKING_ADDRESSES[chainId] this.tokenAddress = cfg.cec this.esCecTokenAddress = cfg.esCec this.stakedEsCecRouter = cfg.stakedEsCecRouter this.stakedCecTracker = cfg.stakedCecTracker this.stakedEsCecTracker = cfg.stakedEsCecTracker } // async balanceOf(provider, tokenAddress, address) { async balanceOf(address) { let provider = await this.bc.eoaProvider // let addressT = provider.getSigner().getAddress(); const contract = new Contract(this.tokenAddress, erc20Abi, provider.getSigner()); return contract.balanceOf(address); } // 查询esCec数量 async esCecBalanceOf(address) { let provider = await this.bc.eoaProvider const contract = new Contract(this.esCecTokenAddress, erc20Abi, provider.getSigner()); return contract.balanceOf(address); } async allowance(tokenAddress, spender) { const provider = this.bc.eoaProvider; const owner = provider.getSigner().getAddress(); const contract = new Contract(tokenAddress, erc20Abi, provider.getSigner()); return contract.allowance(owner, spender); } async approve(address, tokenAddress, amount) { const provider = this.bc.eoaProvider; this.bc.checkAndChangeChain(chainId, provider); const contract = new Contract(tokenAddress, erc20Abi, provider.getSigner()); const tx = await contract.approve(address, amount); await tx.wait(); return tx; } }