import type { ContextPackage } from './contextPackage';
export interface VerifierInput {
    /** The final assistant response text. */
    response: string;
    /** The context package the harness ran with. */
    contextPackage: ContextPackage;
    /** Number of tool calls the harness made during the run. */
    toolCallCount?: number;
    /** Successful tool calls during the run. */
    toolSuccessCount?: number;
    /** Did the harness throw / abort? */
    errored?: boolean;
    /** Did the harness explicitly refuse / block (safety stop)? */
    refused?: boolean;
    /**
     * Optional real-verifier signals from the harness (output validation
     * profile result, test runner, lint, schema check). When provided,
     * they replace the heuristic for that component instead of the score
     * being inferred from response shape alone.
     */
    realSignals?: {
        /** Output validation profile result: 'pass' | 'warn' | 'fail'. */
        outputValidationStatus?: 'pass' | 'warn' | 'fail';
        /** Output validation score 0–1. */
        outputValidationScore?: number;
        /** Number of failing test cases (if a test runner ran). */
        testFailures?: number;
        /** Number of passing test cases. */
        testPasses?: number;
        /** Lint error count (0 = clean). */
        lintErrors?: number;
        /** Schema check passed? */
        schemaCheckPass?: boolean;
        /**
         * Per-tool success ratio for high-cost / failure-prone tools (web_fetch,
         * pdf extraction, etc.). When provided, the worst ratio drags down the
         * tool_reliability component so a chat that "succeeded" overall but had
         * silent web/pdf failures is still penalised.
         */
        toolSuccessRatios?: Record<string, number>;
    };
}
export interface VerifierResult {
    score: number;
    components: Record<string, number>;
    notes: string[];
    /** Names of verifier nodes that conceptually applied. */
    appliedVerifiers: string[];
    /** True if the verifier judged the run actively unsafe / required block. */
    failedHardCheck: boolean;
}
export declare function heuristicVerifier(input: VerifierInput): VerifierResult;
//# sourceMappingURL=verifier.d.ts.map