import type { ResolveExecutableOptions } from "./types.js";
/**
 * Immutable values used to resolve and launch a process consistently.
 */
export interface ProcessContext {
    cwd: string;
    env: NodeJS.ProcessEnv;
    allowWindowsBatchFiles: boolean;
}
interface WindowsCommandInterpreter {
    executablePath: string;
    systemRoot: string;
}
/**
 * Snapshots and validates process resolution options.
 *
 * @param options - Resolution options to snapshot.
 * @returns The immutable context used for resolution and launch.
 */
export declare function createProcessContext(options?: ResolveExecutableOptions): ProcessContext;
/**
 * Resolves an executable using a previously snapshotted process context.
 *
 * @param command - The executable name or path.
 * @param context - The context used for path and environment resolution.
 * @returns The absolute executable path, or `undefined` when no supported file is found.
 */
export declare function resolveExecutableWithContext(command: string, context: ProcessContext): string | undefined;
/**
 * Resolves an executable using an explicit working directory and environment.
 *
 * @param command - The executable name or path. It must not contain arguments.
 * @param options - Resolution options.
 * @returns The absolute executable path, or `undefined` when no supported file is found.
 */
export declare function resolveExecutable(command: string, options?: ResolveExecutableOptions): string | undefined;
/**
 * Resolves and validates the trusted Windows command interpreter.
 *
 * @param childEnvironment - The child environment to validate and normalize.
 * @returns The validated command interpreter and Windows system root.
 */
export declare function resolveWindowsCommandInterpreter(childEnvironment: NodeJS.ProcessEnv): WindowsCommandInterpreter;
export {};
//# sourceMappingURL=resolveExecutable.d.ts.map