/**
 * True iff `cmd` is on PATH. Memoized for the lifetime of the process.
 * Returns false for empty input or anything containing shell metacharacters
 * (defense in depth — argv arrays already prevent injection, but rejecting
 * weird input early avoids surprises in error logs).
 */
export declare function whichSync(cmd: string): boolean;
/**
 * Test seam: same contract as `whichSync` but with a caller-supplied probe.
 * Does not consult or populate the module-level cache, so tests can vary
 * the probe across cases without polluting subsequent calls.
 */
export declare function whichSyncWith(cmd: string, probe: (cmd: string) => boolean): boolean;
/** Test-only: drop the memoized cache. Not exported through utils/index. */
export declare function _resetWhichCacheForTests(): void;
