import TimedCache from '@ulixee/commons/lib/TimedCache'; import { ChainIdentity, Domain, DomainTopLevel, ZoneRecord } from '@argonprotocol/localchain'; import IDatastoreHostLookup, { IDatastoreHost } from '../interfaces/IDatastoreHostLookup'; export { DomainTopLevel }; export interface IZoneRecordLookup { getDomainZoneRecord(domainName: string, tld: DomainTopLevel): Promise; getChainIdentity(): Promise; } /** * Singleton that will track payments for each channelHold for a datastore */ export default class DatastoreLookup implements IDatastoreHostLookup { private mainchainClient; readonly zoneRecordByDomain: { [domain: string]: TimedCache; }; private chainIdentity; constructor(mainchainClient: Promise | null); getHostInfo(datastoreUrl: string): Promise; validatePayment(paymentInfo: { recipient?: { address?: string; notaryId?: number; }; domain?: string; }): Promise; lookupDatastoreDomain(domain: string, version: string | 'any'): Promise; static readDomain(domain: string): Domain; static parseTld(tld: string): DomainTopLevel; static parseDatastoreIpHost(url: URL): IDatastoreHost; }