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