import type { Config } from '../config/schema.js';
import { getTunnelService } from '../tunnel/tunnel-service.js';
import { getTailscaleExposureState } from '../gateway/tailscale-lifecycle.js';
import type { GatewayTailscaleMode } from '../gateway/server-tailscale.js';
import { collectExposureConflicts } from './exposure-guards.js';
export type ExposureStatus = {
    bindMode: string;
    tailscale: ReturnType<typeof getTailscaleExposureState> & {
        cliAvailable: boolean;
    };
    tunnel: ReturnType<ReturnType<typeof getTunnelService>['getStatus']> & {
        consentRequired: boolean;
        canAutoStart: boolean;
    };
    conflicts: ReturnType<typeof collectExposureConflicts>;
};
export declare class ExposureManager {
    getStatus(config: Config): Promise<ExposureStatus>;
    autoStart(config: Config, port: number, gatewayToken: string): Promise<void>;
    startTailscale(config: Config, port: number, mode: GatewayTailscaleMode): Promise<void>;
    stopTailscale(): Promise<void>;
}
export declare function getExposureManager(): ExposureManager;
