import { type HarnessConfig, type SandboxDriver, type SandboxHarnessResult } from './sandbox-harness';
export type SandboxJudgeKind = 'compiler' | 'test' | 'linter' | 'security';
export interface SandboxJudgeSpec {
    id: string;
    kind: SandboxJudgeKind;
    config: HarnessConfig;
}
export interface SandboxJudgeResult {
    id: string;
    kind: SandboxJudgeKind;
    passed: boolean;
    score: number;
    summary: string;
    detail: SandboxHarnessResult;
}
export interface JudgeFleetOptions {
    driver?: SandboxDriver;
    parallel?: boolean;
    /**
     * Max concurrent judge subprocesses. Each spec spawns its own subprocess
     * via the driver, so unbounded fan-out exhausts file descriptors / PIDs.
     * Defaults to the host CPU count. Ignored when `parallel === false`.
     */
    concurrency?: number;
}
export declare class JudgeRunner {
    private readonly driver;
    constructor(driver?: SandboxDriver);
    run(spec: SandboxJudgeSpec): Promise<SandboxJudgeResult>;
}
export declare function runJudgeFleet(specs: SandboxJudgeSpec[], options?: JudgeFleetOptions): Promise<SandboxJudgeResult[]>;
export declare function compilerJudge(id: string, config: HarnessConfig): SandboxJudgeSpec;
export declare function testJudge(id: string, config: HarnessConfig): SandboxJudgeSpec;
export declare function linterJudge(id: string, config: HarnessConfig): SandboxJudgeSpec;
export declare function securityJudge(id: string, config: HarnessConfig): SandboxJudgeSpec;
//# sourceMappingURL=judge-runner.d.ts.map