export type PackageManager = 'bun' | 'cargo' | 'go' | 'gradle' | 'maven' | 'npm' | 'pnpm' | 'ruby' | 'uv' | 'yarn'; export interface PackageManagerCommandRunResult { stdin: string; stdout: string; stderr: string; status: number | undefined; timeSeconds: number; memoryBytes: number; timedOut: boolean; signal: NodeJS.Signals | undefined; outputLimitExceeded: boolean; } export interface RunCommandInTemporaryPackageManagerProjectOptions { cwd: string; projectDir: string; packageManager: PackageManager; command: readonly [string, ...string[]] | ((context: { runDir: string; }) => readonly [string, ...string[]]); /** * Set to false when `command` prepares the dependencies it needs. * Defaults to true. */ prepareDependencies?: boolean; stdin?: string; env?: NodeJS.ProcessEnv; timeLimitSeconds: number; outputLimitBytes?: number; tempDirPrefix?: string; projectFilePaths?: readonly string[]; } /** * Copies a submission directory to a temporary directory, overlays package * manager project files from the problem directory, prepares dependencies, * runs a command, and then removes the temporary directory. * * Under `EXERCODE_SANDBOX_USER` delegation, cleanup kills every process of the sandbox user, so do * not run multiple invocations concurrently in that mode — one finishing would kill the others. */ export declare function runCommandInTemporaryPackageManagerProject(options: RunCommandInTemporaryPackageManagerProjectOptions): Promise; export declare function copyPackageManagerProjectFiles(options: { packageManager: PackageManager; projectDir: string; runDir: string; projectFilePaths?: readonly string[]; }): Promise;