/** * Human-readable output of the `cadre-host nat` commands: the host-level NAT * state, then one block per hosted node, with the forward to make on the * router when a node cannot be reached from outside. * * The types are loose mirrors of `NatStatusSnapshot` (`../nat/types.ts`): the * body arrives over HTTP from whichever cadre-host version is running, so every * field is optional and a missing one prints as `?`. */ export interface NatPortRouteLike { internalPort?: number; externalPort?: number | null; source?: string | null; error?: string | null; } export interface NatNodeLike { nodeId?: string; running?: boolean; verdict?: string; reason?: string | null; tcp?: NatPortRouteLike; ws?: NatPortRouteLike | null; publicAddrs?: string[]; } export interface NatStatusLike { network?: { setting?: string; mode?: string; publicInterfaceIp?: string | null; }; upnpEnabled?: boolean; gateway?: { found?: boolean; lanAddress?: string | null; routerExternalIp?: string | null; lastError?: string | null; }; externalIp?: string | null; cgnatDetected?: boolean; directReachability?: string; lastTestedAt?: string | null; nodes?: NatNodeLike[]; ddns?: { providerId?: string | null; hostname?: string | null; externallyManaged?: boolean; lastUpdateAt?: string | null; lastUpdateOk?: boolean | null; lastError?: string | null; }; } export declare function printNatStatus(s: NatStatusLike): void; /** The block for the node a forward was saved for, then what happens next. */ export declare function printForwardResult(nodeId: string, s: NatStatusLike): void;