export interface YcmdServerInfo {
    port: number;
    host: string;
    hmacSecret: string;
    pid?: number;
    status: "starting" | "running" | "stopped" | "error";
}
export declare class YcmdServer {
    private process;
    private serverInfo;
    private hmacSecret;
    private ycmdPath;
    private configuredPort;
    private detectedPort;
    constructor();
    start(workspaceRoot?: string, port?: number): Promise<YcmdServerInfo>;
    private startWithRetry;
    private doStart;
    stop(): Promise<void>;
    isRunning(): boolean;
    getServerInfo(): YcmdServerInfo | null;
    setExternalServerInfo(serverInfo: YcmdServerInfo): void;
    healthCheck(): Promise<boolean>;
    private createServerConfig;
    private writeServerConfig;
    private setupProcessHandlers;
    private waitForServerStart;
    private cleanup;
    private forceCleanup;
    private setupExitHandler;
    private gracefulShutdown;
    private findAvailablePort;
    private isPortAvailable;
    restart(workspaceRoot?: string, port?: number): Promise<YcmdServerInfo>;
}
