/** Minimum Node major (mirrors package.json `engines.node`). */ export declare const MIN_NODE_MAJOR = 22; export interface NodeCheck { /** e.g. "v22.21.1" */ version: string; major: number; required: number; ok: boolean; } /** Classify the running Node against the minimum major. Pure. */ export declare function checkNode(version?: string, required?: number): NodeCheck; /** * The version to show in the update card, for the install rooted at `rootDir`. * For an npm install this is the real published version from package.json. A * source checkout ships the unbuilt `0.0.0` (CI injects the real version only * at publish), so we derive a real baseline from the latest git tag * (`git describe --tags --abbrev=0` → the clean tag, e.g. "v2.86.0", stripped * of the leading v). That makes the version display, "behind" comparison, and * changelog range correct in dev mode too. Falls back to the raw package.json * version if git is unavailable. * * Takes an explicit dir so the local-dev update path can report the version of * the checkout it actually updated (the wrapper's checkout), which may differ * from the running process's install root. */ export declare function resolveCurrentVersionAt(rootDir: string): string; /** The version to show for the running install (its own package root). */ export declare function resolveCurrentVersion(): string; export type InstallKind = 'npm-global' | 'pnpm-global' | 'yarn-global' | 'bun-global' | 'source-checkout' | 'unknown'; export interface InstallEntry { /** The PATH entry that resolved to this install. */ binPath: string; /** The install root we attribute it to (the dedup key). */ root: string; kind: InstallKind; } export interface InstallDiagnostics { entries: InstallEntry[]; /** true when more than one distinct install root is reachable on PATH. */ multiple: boolean; } /** Filesystem deps, injectable for tests. */ export interface InstallProbeDeps { /** Read a bin file's text, or null (missing / binary / unreadable). */ readFile: (path: string) => string | null; /** Resolve symlinks to a real path, or null on failure. */ realpath: (path: string) => string | null; /** Does `root` look like a source checkout (has .git or src)? */ isSourceCheckout: (root: string) => boolean; } /** * Pure: dedup the raw `which -a botmux` paths, resolve each to an install root, * and report whether more than one distinct install is present. Exported for * tests. */ export declare function analyzeInstalls(binPaths: string[], deps: InstallProbeDeps): InstallDiagnostics; /** Production wiring: probe PATH for botmux installs. */ export declare function detectBotmuxInstalls(): InstallDiagnostics; //# sourceMappingURL=install-diagnostics.d.ts.map