import { Contract } from "ethers"; export class ContractClient { contractAddress: string; wallet: any; account; contract; cfxClient: any; constructor(address: string, abi: string, wallet: any) { this.contractAddress = address; this.wallet = wallet this.account = {"address": this.wallet.address}; // this.account = this.wallet.address this.contract = new Contract(address, abi, wallet); } async mint(walletAddress: string, ItemId: number) { let res = await this.contract["safeMint(address,uint256)"](walletAddress, ItemId, {gasLimit: 8000000}) await res.wait() } async transfer(fromAddress: string = "", toAddress: string, ItemId: number) { if (fromAddress === "") { fromAddress = this.account.address } let res = await this.contract['safeTransferFrom(address,address,uint256)'](fromAddress, toAddress, ItemId, {gasLimit: 8000000}) await res.wait() } async balanceOf(walletAddress: string) { return this.contract.balanceOf(walletAddress) } async getAssets(walletAddress: string) { const number = await this.contract.balanceOf(walletAddress); const list = []; for (let i = 0; i < Number(number); i++) { const id = await this.contract.methods.tokenOfOwnerByIndex(walletAddress, i); list.push(id); } return list; } async isSponsored(walletAddress: string) { throw new Error("not implemented"); } async checkSponsor() { throw new Error("not implemented"); } async addSponsored(walletAddress: string) { throw new Error("not implemented"); } }