/**
 * ADHDev — IDE Detector (canonical implementation)
 *
 * Detects installed IDEs on the user's local machine.
 * Supports macOS, Windows, and Linux.
 *
 * Migrated from @adhdev/core — this is now the single source of truth.
 */
import type { ProviderLoader } from '../providers/provider-loader.js';
export interface IDEInfo {
    id: string;
    name: string;
    displayName: string;
    installed: boolean;
    path: string | null;
    cliCommand: string | null;
    version: string | null;
    icon: string;
    notes?: string;
}
export interface IDEDefinition {
    id: string;
    name: string;
    displayName: string;
    icon: string;
    cli: string;
    paths: {
        darwin?: string[];
        win32?: string[];
        linux?: string[];
        [key: string]: string[] | undefined;
    };
}
export declare function registerIDEDefinition(def: IDEDefinition): void;
/**
 * Resolve an IDE version on demand (NOT at boot).
 *
 * Order of preference, all spawn-free where possible:
 *  1. win32: read the bundled product.json/package.json next to the exe.
 *  2. Otherwise spawn `<cli> --version` — but ONLY when the binary is not a
 *     known GUI executable (the #4 guard), so we never boot an IDE window.
 *
 * `win32ProcessNames` is provider.json `processNames.win32` (type → exe names),
 * used to recognise GUI executables. Callers that have a ProviderLoader can
 * pass `providerLoader.getWinProcessNames()`.
 */
export declare function getIdeVersion(cliCommand: string, win32ProcessNames?: Record<string, string[]>): Promise<string | null>;
export declare function detectIDEs(providerLoader?: ProviderLoader): Promise<IDEInfo[]>;
