import { Logger } from '../utils/logger.js';
export interface LudusConfig {
    adminUser: string;
    connectionMethod: 'wireguard' | 'ssh-tunnel';
    wireguardConfig?: string | undefined;
    apiKey: string;
    sshHost: string;
    sshUser: string;
    sshAuthMethod: 'password' | 'key';
    sshPassword?: string | undefined;
    sshKeyPath?: string | undefined;
    sshKeyPassphrase?: string | undefined;
    ludusUrl?: string;
    verifySSL?: boolean;
}
export interface SetupResult {
    success: boolean;
    message: string;
    config?: LudusConfig;
    requiresRestart?: boolean;
}
export declare class InteractiveSetup {
    private logger;
    private rl;
    constructor(logger: Logger);
    /**
     * Secure prompt for sensitive data (hides input)
     */
    private securePrompt;
    private prompt;
    private checkWireGuardAvailable;
    private checkWireGuardConnectivity;
    private connectWireGuard;
    private executeWireGuardCommand;
    private connectWireGuardWindows;
    /**
     * Stop WireGuard tunnel on Windows
     */
    private stopWireGuardWindows;
    private connectWireGuardUnix;
    private validateApiKey;
    private testSshConnectivity;
    private createSshTunnel;
    private testTunnelConnectivity;
    private getConfigFromEnvironment;
    /**
     * Try to retrieve credentials from keyring
     */
    private getConfigFromKeyring;
    /**
     * Store credentials in keyring after successful validation
     */
    private storeConfigInKeyring;
    private promptForCredentials;
    /**
     * Main interactive setup flow
     */
    runSetup(forceInteractive?: boolean): Promise<SetupResult>;
    /**
     * Check if setup is complete by verifying stored credentials
     */
    static checkSetupComplete(): Promise<boolean>;
}
//# sourceMappingURL=interactiveSetup.d.ts.map