2024-09-10 20:42:00 +08:00

48 lines
1.7 KiB
JavaScript

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;
}
}