AbsM.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. declare global {
  2. interface Window {
  3. AbsHelper: any;
  4. }
  5. }
  6. export class ConnectResult {
  7. public isMainNet: boolean;
  8. public account: string = "";
  9. public provider: any = null;
  10. public walletClient: any = null;
  11. }
  12. export class AbsWrapper {
  13. result: ConnectResult;
  14. adapter: any;
  15. constructor(result: ConnectResult, adapter: any) {
  16. this.result = result;
  17. this.adapter = adapter;
  18. }
  19. }
  20. export class AbsM {
  21. private static _ins: AbsM;
  22. public static get ins(): AbsM {
  23. return AbsM._ins ?? (AbsM._ins = new AbsM());
  24. }
  25. private _isConnected: boolean = false;
  26. public get isConnected(): boolean {
  27. return this._isConnected;
  28. }
  29. public async connectWallet(): Promise<AbsWrapper> {
  30. //@ts-ignore
  31. let adapter = await window.AbsHelper.create({
  32. network: "testnet",
  33. apiKey: "your-api-key",
  34. });
  35. console.log("adapter", adapter);
  36. const connectResult = await adapter.connect(true);
  37. console.log("connectHandler", connectResult);
  38. this._isConnected = true;
  39. return new AbsWrapper(connectResult, adapter);
  40. }
  41. public async getBalance(w: AbsWrapper): Promise<number> {
  42. await new Promise((resolve) => setTimeout(resolve, 1000));
  43. let balance = await window.AbsHelper.getBalance(w.adapter, w.result);
  44. console.log("balance", balance);
  45. return balance;
  46. }
  47. public disconnectWallet() {
  48. localStorage.clear();
  49. window.location.reload();
  50. }
  51. }