import type { DesktopPaths } from '../shared/types.js'; import type { ExternalRuntimeCandidate } from './runtime-service.js'; type ReadTextFile = (path: string, encoding: BufferEncoding) => string; type StatFile = (path: string) => { size: number; }; type ExecFile = (file: string, args: string[], options: { encoding: BufferEncoding; timeout: number; stdio: ['ignore', 'pipe', 'ignore']; }) => string; interface InstallEntry { binPath: string; root: string; pathEnv?: string; } export interface ExternalRuntimeDiscoveryDeps { binPaths?: string[]; platform?: NodeJS.Platform; env?: NodeJS.ProcessEnv; execFileSync?: ExecFile; existsSync?: (path: string) => boolean; readFileSync?: ReadTextFile; realpathSync?: (path: string) => string; statSync?: StatFile; } export declare function discoverExternalRuntimeCandidate(paths: DesktopPaths, deps?: ExternalRuntimeDiscoveryDeps): ExternalRuntimeCandidate | null; export declare function selectExternalRuntimeCandidate(entries: InstallEntry[], _paths: DesktopPaths, deps?: ExternalRuntimeDiscoveryDeps): ExternalRuntimeCandidate | null; /** * Merged login+interactive shell PATH for GUI-launched processes (darwin only; * undefined elsewhere or when probing fails). The bundled-runtime daemon spawn * uses this so per-bot CLIs installed via nvm/fnm/homebrew stay findable — * PtyBackend spawns CLIs without any rc-sourcing shell wrapper, so whatever * PATH the daemon starts with is what `#!/usr/bin/env node` resolves against. */ export declare function probeShellPathEnv(): string | undefined; export {}; //# sourceMappingURL=external-runtime.d.ts.map