2021-10-31 00:06:11 +00:00
|
|
|
import { BaseProvider } from "@ethersproject/providers";
|
|
|
|
|
import { IAddressResolver } from "./address-resolver";
|
|
|
|
|
import { CompositeAddressResolver } from "./CompositeAddressResolver";
|
|
|
|
|
import { ENSAddressResolver } from "./ENSAddressResolver";
|
|
|
|
|
|
2021-10-31 00:10:15 +00:00
|
|
|
export type ResolvedAddresses = Record<string, string>;
|
2021-10-31 00:08:10 +00:00
|
|
|
|
2021-10-31 00:06:11 +00:00
|
|
|
// Create and configure the main resolver
|
|
|
|
|
const _mainResolver = new CompositeAddressResolver();
|
|
|
|
|
_mainResolver.addResolver(new ENSAddressResolver());
|
|
|
|
|
|
|
|
|
|
export const mainResolver: IAddressResolver = _mainResolver;
|
|
|
|
|
|
|
|
|
|
export const batchPopulate = async (
|
|
|
|
|
provider: BaseProvider,
|
|
|
|
|
addresses: string[]
|
2021-10-31 00:10:15 +00:00
|
|
|
): Promise<ResolvedAddresses> => {
|
2021-10-31 00:06:11 +00:00
|
|
|
const solvers: Promise<string | undefined>[] = [];
|
|
|
|
|
for (const a of addresses) {
|
|
|
|
|
solvers.push(mainResolver.resolveAddress(provider, a));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const results = await Promise.all(solvers);
|
2021-10-31 00:10:15 +00:00
|
|
|
const cache: ResolvedAddresses = {};
|
2021-10-31 00:06:11 +00:00
|
|
|
for (let i = 0; i < results.length; i++) {
|
|
|
|
|
const r = results[i];
|
|
|
|
|
if (r === undefined) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
cache[addresses[i]] = r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return cache;
|
|
|
|
|
};
|