import { Injectable } from '@angular/core'; import { environment } from '@src/environments/environment'; import { CICRegistry, FileGetter } from '@cicnet/cic-client'; import { TokenRegistry } from '@app/_eth'; import { HttpGetter } from '@app/_helpers'; import { Web3Service } from '@app/_services/web3.service'; // export interface RegistryCollection { // cicRegistry: CICRegistry; // tokenRegistry: TokenRegistry; // } @Injectable({ providedIn: 'root', }) export class RegistryService { static fileGetter: FileGetter = new HttpGetter(); private static registry: CICRegistry; private static tokenRegistry: TokenRegistry; // private static registries: RegistryCollection; public static async getRegistry(): Promise { if (!RegistryService.registry) { RegistryService.registry = new CICRegistry( Web3Service.getInstance(), environment.registryAddress, 'Registry', RegistryService.fileGetter, ['../../assets/js/block-sync/data'] ); RegistryService.registry.declaratorHelper.addTrust(environment.trustedDeclaratorAddress); await RegistryService.registry.load(); } return RegistryService.registry; } public static async getTokenRegistry(): Promise { if (!RegistryService.tokenRegistry) { // then initial it const registry = await RegistryService.getRegistry(); const tokenRegistryAddress = await RegistryService.registry.getContractAddressByName( 'TokenRegistry' ); RegistryService.tokenRegistry = new TokenRegistry(tokenRegistryAddress); return new Promise((resolve, reject) => { resolve(RegistryService.tokenRegistry); }); } return new Promise((resolve, reject) => { resolve(RegistryService.tokenRegistry); }); } }