import { YcmdServer, YcmdServerInfo } from "./server";
import { YcmdClient } from "./client";
export interface SetupClientParams {
    filepath: string;
    fileContents?: string;
}
export type SetupClientResult = {
    success: true;
    client: YcmdClient;
    resolvedFilePath: string;
    contents: string;
    filetypes: string[];
    message: string;
} | {
    success: false;
    client?: undefined;
    resolvedFilePath?: undefined;
    contents?: undefined;
    filetypes?: undefined;
    message: string;
};
declare class YcmdServerManager {
    private static instance;
    private server;
    private constructor();
    static getInstance(): YcmdServerManager;
    getServer(): YcmdServer;
    isRunning(): Promise<boolean>;
    private detectRunningServer;
    private checkPort;
    getServerInfo(): YcmdServerInfo | null;
    start(workspaceRoot?: string, port?: number): Promise<YcmdServerInfo>;
    stop(): Promise<void>;
    healthCheck(): Promise<boolean>;
    restart(workspaceRoot?: string, port?: number): Promise<YcmdServerInfo>;
    setupClientAndNotifyFile(params: SetupClientParams): Promise<SetupClientResult>;
}
export declare const ycmdServerManager: YcmdServerManager;
export {};
