import type { DnsProvider, DnsRecordTypeValue } from '../dns/DnsProvider'; export interface EdgeNodeDnsCoordinatorOptions { provider: DnsProvider; /** 顶级域名,例如 `undefineds.site`。 */ rootDomain?: string | null; /** * 默认记录类型,当目标地址无法识别时回退使用。 * 一般为 `A`(IPv4)或 `AAAA`(IPv6)。 */ defaultRecordType?: DnsRecordTypeValue; /** TTL 秒数,缺省按供应商默认。 */ ttl?: number | string | null; } export declare class EdgeNodeDnsCoordinator { private readonly logger; private readonly provider; private readonly rootDomain?; private readonly defaultRecordType; private readonly ttl?; private readonly enabled; constructor(options: EdgeNodeDnsCoordinatorOptions); /** * Reconciles the DNS record owned by one node. * * `binding` is the control plane's subdomain assignment for that node. When it is * supplied it is authoritative, including when it carries no subdomain: that means the * node owns no record and nothing may be written or deleted. Node-reported metadata is * still consulted for callers whose subdomain is local (`LocalNetworkManager`). */ synchronize(nodeId: string, metadata: Record, binding?: { subdomain?: string; }): Promise; private extractDnsHints; private extractTunnelEntrypoint; private extractString; private detectRecordType; private normalizeRecordValue; private extractHost; private isIpv4; private isIpv6; private normalizeRootDomain; private normalizeTtl; }