/** * SubdomainClient - Local 模式子域名客户端 * * Local 模式不持有 DNS/Tunnel 密钥,通过调用 Cloud API 来管理子域名。 * 使用 Node Token 认证(与 Edge Node 心跳相同的认证方式)。 */ export interface SubdomainClientOptions { /** Cloud API 端点 (如 https://center.example.com/v1/subdomain) */ cloudApiEndpoint: string; /** 节点 ID */ nodeId: string; /** 节点 Token */ nodeToken: string; /** 请求超时 (ms) */ timeoutMs?: number; } export interface SubdomainCheckResult { subdomain: string; available: boolean; reason?: string; } export interface SubdomainRegistrationResult { success: boolean; subdomain: string; fullDomain: string; mode: 'direct' | 'tunnel'; ipv4?: string; tunnelProvider?: string; tunnelEndpoint?: string; registeredAt: string; message?: string; } export interface SubdomainInfo { subdomain: string; fullDomain: string; mode: 'direct' | 'tunnel'; ipv4?: string; tunnelProvider?: string; tunnelEndpoint?: string; registeredAt: string; ownerId?: string; } export interface DdnsAllocationResult { success: boolean; subdomain: string; domain: string; fqdn: string; ipAddress?: string; ipv6Address?: string; tunnelProvider?: string; tunnelToken?: string; tunnelEndpoint?: string; createdAt: string; } export interface DdnsUpdateResult { success: boolean; subdomain: string; domain: string; fqdn: string; ipAddress?: string; ipv6Address?: string; tunnelProvider?: string; tunnelToken?: string; tunnelEndpoint?: string; updatedAt: string; } export interface DdnsRecordInfo { subdomain: string; domain: string; fqdn: string; ipAddress?: string; ipv6Address?: string; recordType: string; status: string; ttl: number; tunnelProvider?: string; createdAt: string; updatedAt: string; } /** * 子域名客户端 (Local 模式) * * 通过 HTTP 调用 Cloud 的子域名 API */ export declare class SubdomainClient { private readonly logger; private readonly cloudApiEndpoint; private readonly nodeId; private readonly nodeToken; private readonly timeoutMs; constructor(options: SubdomainClientOptions); /** * 检查子域名可用性 */ checkAvailability(name: string): Promise; /** * 注册子域名 */ register(options: { subdomain: string; localPort: number; ipv4?: string; }): Promise; /** * 获取子域名信息 */ getInfo(name: string): Promise; /** * 列出所有子域名 */ list(): Promise<{ registrations: SubdomainInfo[]; total: number; }>; /** * 释放子域名 */ release(name: string): Promise<{ success: boolean; message: string; }>; /** * 启动隧道 */ startTunnel(name: string): Promise<{ success: boolean; message: string; }>; /** * 停止隧道 */ stopTunnel(name: string): Promise<{ success: boolean; message: string; }>; /** * 分配 DDNS 子域名 */ allocateDdns(options: { subdomain: string; ipAddress?: string; ipv6Address?: string; mode?: 'direct' | 'tunnel'; tunnelProvider?: string; localPort?: number; }): Promise; /** * 更新 DDNS 记录 */ updateDdns(subdomain: string, options: { ipAddress?: string; ipv6Address?: string; mode?: 'direct' | 'tunnel'; tunnelProvider?: string; localPort?: number; }): Promise; /** * 获取 DDNS 记录 */ getDdns(subdomain: string): Promise; private fetch; } /** * SubdomainClient 错误 */ export declare class SubdomainClientError extends Error { readonly status: number; constructor(message: string, status: number); }