/**
 * Hook Additional Context 类型与辅助函数
 *
 * 从 adapters/claude_code/pre_prompt_contract.ts 提取至 engine 层，
 * 修正 engine→adapter 的依赖方向违规。
 * 被 scenario runner、pre_prompt_contract、negative tests 共用。
 */
import type { IntentRouteDecision } from "./intent_router.js";
/** Hook additionalContext 中 route_decision 的序列化格式 */
export interface SerializedRouteDecision {
    route: string;
    execution_shape: string;
    mutation_allowed: boolean;
    input_materials: Array<{
        kind: string;
        path: string | null;
        required: boolean;
    }>;
    output_artifact: {
        kind: string;
        path?: string;
        template?: string;
        taskId?: string;
    } | null;
    missing_required_inputs: string[];
    prompt_template: string | null;
    confidence: number;
    evidence: string[];
    rejected_routes: Array<{
        route: string;
        reason: string;
    }>;
    conflicts: Array<{
        description: string;
        resolution: string;
    }>;
}
/** hook/classify 比较时的冲突证据 */
export interface RouteDecisionConflict {
    field: string;
    expected: unknown;
    actual: unknown;
    source: "hook" | "classify";
    severity: "hard_fail" | "degraded";
}
/** 结构化 additionalContext 验证结果 */
export interface HookStructureValidation {
    pass: boolean;
    missing_fields: string[];
}
/**
 * 从 RouteDecision 构建结构化 additionalContext。
 * skip_chat / direct_answer 返回 null（不触发 SoloForge 工具链）。
 */
export declare function buildHookAdditionalContext(decision: IntentRouteDecision): Record<string, unknown> | null;
/**
 * 验证 additionalContext 结构是否完整。
 * 用于 negative tests 证明"缺字段时 Gate 会红"。
 */
export declare function verifyHookAdditionalContextStructure(ctx: Record<string, unknown>): HookStructureValidation;
/**
 * 比较 hook RouteDecision 与 classify RouteDecision，返回冲突证据。
 * 不一致时不允许静默覆盖，必须产生 conflict evidence。
 */
export declare function compareHookAndClassifyRouteDecision(hookDecision: IntentRouteDecision, classifyDecision: IntentRouteDecision): RouteDecisionConflict[];
//# sourceMappingURL=hook_context_types.d.ts.map