export type LoopGuardAction = "new-run" | "continue" | "verify-only" | "stop";
export interface LoopGuardDecision {
    action: LoopGuardAction;
    reason: "new-intent" | "explicit-continue" | "explicit-verification" | "duplicate-prompt" | "duplicate-confirmation-after-completed-run" | "completed-goal-no-new-intent" | "max-loop-guard";
    confidence: number;
    visibleMessage?: string;
    checks?: Array<{
        kind: "file-exists" | "grep" | "command";
        target: string;
        expected?: string;
    }>;
}
export interface LoopGuardInput {
    root: string;
    rawPrompt: string;
    sourceCommand?: string;
    goalId?: string;
    runId?: string;
    previousPrompts?: Array<{
        hash: string;
        normalized: string;
        at: string;
    }>;
}
export declare function normalizePromptForLoopGuard(value: string): string;
export declare function isVerificationPrompt(value: string): boolean;
export declare function hashPrompt(value: string): string;
export declare function evaluatePreOrchestrationGuard(input: LoopGuardInput): Promise<LoopGuardDecision>;
