import { execFileSync } from "node:child_process";
import { existsSync } from "node:fs";
import { platform } from "node:os";
export interface FindExecutableDependencies {
    execFileSync: typeof execFileSync;
    existsSync: typeof existsSync;
    platform: typeof platform;
}
/**
 * On Unix we use `which`. On Windows we use `where.exe`.
 *
 * Both rely on the inherited process.env.PATH — on macOS/Linux, Electron
 * enriches it at startup via inheritLoginShellEnv(); on Windows, Electron
 * inherits the full user environment from Explorer.
 */
export declare function findExecutableSync(name: string, dependencies?: FindExecutableDependencies): string | null;
export declare function isCommandAvailableSync(command: string): boolean;
export declare function findExecutable(name: string): Promise<string | null>;
export declare function isCommandAvailable(command: string): Promise<boolean>;
/**
 * When spawning with `shell: true` on Windows, the command is passed to
 * `cmd.exe /d /s /c "command args"`. The `/s` strips outer quotes, so a
 * command path with spaces (e.g. `C:\Program Files\...`) is split at the
 * space. Wrapping it in quotes produces the correct `"C:\Program Files\..." args`.
 */
export declare function quoteWindowsCommand(command: string): string;
/**
 * `spawn(..., { shell: true })` on Windows also passes argv through `cmd.exe`.
 * Any argument containing spaces must be quoted or it will be split before the
 * child process sees it.
 */
export declare function quoteWindowsArgument(argument: string): string;
//# sourceMappingURL=executable.d.ts.map