import type { TunnelRegistration } from './tunnel-types.js';
export type BrokerRegisterInput = {
    brokerUrl: string;
    registrationSecret: string;
    gatewayVersion: string;
    platform: string;
    gatewayTokenHash: string;
    preferredSubdomain?: string;
};
export declare class TunnelBrokerClient {
    private readonly baseUrl;
    constructor(baseUrl: string);
    private apiUrl;
    register(input: BrokerRegisterInput): Promise<TunnelRegistration>;
    heartbeat(tunnelId: string, tunnelToken: string): Promise<void>;
    deregister(tunnelId: string, tunnelToken: string): Promise<void>;
    setDnsChallenge(input: {
        tunnelId: string;
        tunnelToken: string;
        subdomain: string;
        txtValue: string;
    }): Promise<{
        recordId: string;
        fqdn: string;
    }>;
    cleanupDnsChallenge(input: {
        tunnelId: string;
        tunnelToken: string;
        recordId: string;
    }): Promise<void>;
}
export declare function resolveBrokerApiBase(brokerUrl: string): string;
