export abstract class ResolverService {
abstract vendor: ResolverVendor;
abstract resolve(domain: string, options?: ResolverServiceOptions, networks?: string[]): Promise<Account[]>;
}
export class KeyValueResolverService extends ResolverService {
vendor: ResolverVendor = "keyvalue"
registry = {
"ivan": "0x1",
"stepan": "0x2",
"andrey": "0x3",
}
async resolve(domain: string, { throwErrorOnInvalidDomain }: ResolverServiceOptions = defaultResolverServiceOptions): Promise<Account[]> {
const address = registry[domain];
return address ? [{ address, network: "evm", from: this.vendor }] : [];
}
}
const resolver = new RedefinedResolver({
resolvers: [new KeyValueResolverService()]
});
const resolver = new RedefinedResolver({
resolvers: [
...RedefinedResolver.createRedefinedResolvers(),
new KeyValueResolverService(),
]
});
Step 3. Implement SupportReverse interface if your resolver is capable of domain lookup by address
export class KeyValueResolverService extends ResolverService implements SupportReverse {
get vendor(): ResolverVendor {
return "keyvalue";
}
async reverse(address: string): Promise<ReverseAccount[]> {
try {
return [{
domain: "example",
from: this.vendor
}]
} catch (e: any) {
throw Error(`KeyValue Error: ${e.message}`);
}
}
}