import type { TunnelStage, TunnelStatus } from './TunnelProvider'; /** * Tunnel readiness is a sequence, not a boolean. * * A provider process that started is not a control connection, a control connection is not * a published proxy, and a published proxy is not proof that the Gateway is reachable from * outside. These helpers keep every provider reporting the same four facts so the UI and * the diagnostics never turn "we spawned something" into "the tunnel is up". */ export declare function createTunnelStatus(stage: TunnelStage, patch?: Partial): TunnelStatus; /** Keeps the previous error visible while a provider transitions through a restart. */ export declare function mergeTunnelError(previous: string | undefined, next: string | undefined): string | undefined; /** Recognizes a missing client binary, which is a deployment fact, not a network failure. */ export declare function describeSpawnError(provider: string, binary: string, error: unknown): string;