otterscan/src/api/address-resolver/CompositeAddressResolver.ts

27 lines
672 B
TypeScript
Raw Normal View History

2021-10-31 00:06:11 +00:00
import { BaseProvider } from "@ethersproject/providers";
import { IAddressResolver } from "./address-resolver";
export class CompositeAddressResolver implements IAddressResolver {
private resolvers: IAddressResolver[] = [];
addResolver(resolver: IAddressResolver) {
this.resolvers.push(resolver);
}
async resolveAddress(
provider: BaseProvider,
address: string
): Promise<string | undefined> {
for (const r of this.resolvers) {
const name = r.resolveAddress(provider, address);
if (name !== undefined) {
return name;
}
}
return undefined;
// TODO: fallback to address itself
// return address;
}
}