ContractManager.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { ERC20ABI } from "./abis/ERC20ABI";
  2. import { Contract, Web3Result as Web3Params } from "./Contract";
  3. import { WalletManager } from "./WalletManager";
  4. export class ContractManager {
  5. private static _ins: ContractManager = null!;
  6. private constructor() {}
  7. public static get ins(): ContractManager {
  8. return ContractManager._ins ??= new ContractManager();
  9. }
  10. public async getZPBalance() {
  11. let web3Result = WalletManager.ins.getWeb3Result();
  12. console.log("web3Result", web3Result);
  13. let contractAddress = "0x8BD8d0f43484E06E86c8667F717A6A80a6F24A2e";
  14. let tokenAddress = "0x6009950E4B05FBa0F95fe799Ce47b56E2DE4a34F";
  15. //@ts-ignore
  16. let contract = await new window.ethers.Contract(
  17. tokenAddress,
  18. ERC20ABI,
  19. web3Result.signer
  20. );
  21. console.log("contract", contract, web3Result.account);
  22. let balance = await this.contractBalance(contract, web3Result.account);
  23. console.log("balance", balance);
  24. return balance;
  25. }
  26. public async contractBalance(
  27. contract: any,
  28. address: string
  29. ): Promise<number> {
  30. try {
  31. //@ts-ignore
  32. const ethers = window.ethers;
  33. if (!ethers.utils.isAddress(address)) {
  34. console.log("Invalid address format");
  35. // MsgHints.show("Invalid address format");
  36. return 0;
  37. }
  38. const balance = await contract.balanceOf(address);
  39. console.log(" --- balance", balance);
  40. let balanceStr = await this.formatEther(balance);
  41. let balanceNum = Number(balanceStr);
  42. return balanceNum;
  43. } catch (error) {
  44. console.log(" contractBalance error ", error);
  45. return 0;
  46. }
  47. }
  48. public async formatEther(balance: any): Promise<string> {
  49. //@ts-ignore
  50. return Number(Number(window.ethers.utils.formatEther(balance)).toFixed(8));
  51. }
  52. }