import type { AgentLogger, ChatMessage, ThinkingBlock, ToolLoopTransition } from "../types.js";
export type CompletionActionPolicyReason = "file_action_verification" | "explicit_required_file_verification" | "explicit_extra_file_verification" | "artifact_index_evidence_verification" | "final_marker_verification" | "multi_file_skeleton_verification";
export interface CompletionActionPolicyInput {
    inputMessages: readonly ChatMessage[];
    messages: unknown[];
    finalText: string;
    thinkingBlocks: readonly ThinkingBlock[];
    stopHookActive: boolean | undefined;
    totalToolCallCount: number;
    distinctToolNames: ReadonlySet<string>;
    log: Pick<AgentLogger, "info">;
}
export interface CompletionActionPolicyDecision {
    reason: CompletionActionPolicyReason;
    messages: unknown[];
    stopHookActive: true;
    transition: ToolLoopTransition;
}
export declare function findMissingExplicitRequiredFiles(inputMessages: readonly ChatMessage[], messages: unknown[]): string[];
export declare function buildExplicitRequiredFilesFailureContent(input: {
    inputMessages: readonly ChatMessage[];
    messages: unknown[];
    reason: string;
}): string | undefined;
export declare function buildMissingFinalMarkerFailureContent(input: {
    inputMessages: readonly ChatMessage[];
    reason: string;
}): string | undefined;
export declare function buildVerifiedExactFinalMarkerContent(input: {
    inputMessages: readonly ChatMessage[];
    messages: unknown[];
}): string | undefined;
type CandidateToolCall = {
    id: string;
    function: {
        name: string;
        arguments: string;
    };
};
export declare function buildPrematureCompletionArtifactBlock(input: {
    inputMessages: readonly ChatMessage[];
    messages: unknown[];
    toolCall: CandidateToolCall;
}): string | undefined;
export declare function resolveCompletionActionPolicy(input: CompletionActionPolicyInput): CompletionActionPolicyDecision | null;
export {};
