/**
 * CloudflareNamedProvider — Tier-1 persistent Cloudflare named tunnel.
 *
 * Extracted from the original `TunnelManager.startNamedTunnel()` and
 * `startConfigFileTunnel()` so the manager can drive multiple providers
 * through `TunnelProvider`. The named path supports two auth modes,
 * preserved verbatim from the original behavior:
 *
 *   - Token auth: `cloudflared` via `Tunnel.withToken(token)`. The URL
 *     is the configured hostname (passed via `hostname`); cloudflared
 *     surfaces 'connected' rather than 'url'.
 *   - Config-file auth: spawn `cloudflared tunnel --config <file> run`
 *     directly. URL is the configured hostname; we watch stderr for
 *     "Registered tunnel connection" / "Connection registered" to know
 *     the tunnel is up.
 *
 * `isAvailable()` returns false when neither token NOR configFile is
 * configured, so the manager skips this provider on quick-only installs.
 *
 * Like the quick provider, this module owns ONLY spawn + URL emission
 * + teardown. Retry, reconnect, fallback, and notification are owned by
 * the manager per the spec's single-owner mandate.
 */
import type { TunnelProvider, TunnelProviderHandle, ProviderName, ProviderTier } from './TunnelProvider.js';
export interface CloudflareNamedProviderOptions {
    /** Cloudflare tunnel token (token-auth mode). */
    token?: string;
    /** Config file path (config-file-auth mode). */
    configFile?: string;
    /** Public hostname for the tunnel (e.g. echo.dawn-tunnel.dev). */
    hostname?: string;
    /** Start timeout in milliseconds (default: 30_000 for token; 15_000 for config-file). */
    startTimeoutMs?: number;
}
export declare class CloudflareNamedProvider implements TunnelProvider {
    readonly name: ProviderName;
    readonly tier: ProviderTier;
    private readonly token?;
    private readonly configFile?;
    private readonly hostname?;
    private readonly startTimeoutMs?;
    constructor(opts: CloudflareNamedProviderOptions);
    isAvailable(): Promise<boolean>;
    start(localPort: number): Promise<TunnelProviderHandle>;
    private startWithToken;
    private startConfigFile;
    private stopHandle;
    private stopChild;
    private killWithEscalation;
}
//# sourceMappingURL=CloudflareNamedProvider.d.ts.map