import { BaseProvider } from "@ethersproject/providers"; import { IAddressResolver } from "./address-resolver"; export type SelectedResolvedName = [IAddressResolver, T] | null; export class CompositeAddressResolver implements IAddressResolver> { private resolvers: IAddressResolver[] = []; addResolver(resolver: IAddressResolver) { this.resolvers.push(resolver); } async resolveAddress( provider: BaseProvider, address: string ): Promise | undefined> { for (const r of this.resolvers) { const resolvedAddress = await r.resolveAddress(provider, address); if (resolvedAddress !== undefined) { return [r, resolvedAddress]; } } return null; } }