48 lines
1.7 KiB
JavaScript
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;
|
|
}
|
|
} |