From ffd22ec1bbdf10287c7aa3b89082404db8ebc009 Mon Sep 17 00:00:00 2001 From: Dmitry Fesenko Date: Fri, 4 Jun 2021 15:18:07 +0300 Subject: [PATCH] feat: get role registration types --- src/iam.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/iam.ts b/src/iam.ts index d2a91d7c..7cc9f538 100644 --- a/src/iam.ts +++ b/src/iam.ts @@ -1480,6 +1480,27 @@ export class IAM extends IAMBase { } } + async registrationTypesOfRoles(roles: string[]): Promise>> { + const types: Record> = roles.reduce((acc, role) => acc[role] = new Set(), {}); + for await (const role of roles) { + const def = await this._domainDefinitionReader.read({ node: role }); + if (!DomainReader.isRoleDefinition(def)) { + continue; + } + const resolver = await this._ensRegistry.resolver(role); + const { chainId } = await this._provider.getNetwork(); + const { ensResolverAddress, ensPublicResolverAddress } = chainConfigs[chainId]; + if (resolver === ensResolverAddress) { + types[role].add(RegistrationTypes.OnChain); + types[role].add(RegistrationTypes.OffChain); + } + else if (resolver === ensPublicResolverAddress) { + types[role].add(RegistrationTypes.OffChain); + } + } + return types; + } + async subscribeTo({ subject = `${this._did}.${NATS_EXCHANGE_TOPIC}`, messageHandler