import type { Item, ResearchEvidenceCard, ResearchRun, ResearchSubquestion, ThreadId, Turn, TurnId, VerdictRecord } from "@best-agent/protocol";
import type { AgentProfile } from "../agent/profile-registry.js";
type DeepResearchSubquestionPlan = {
    profile: AgentProfile;
    prompt: string;
    subquestionId: string;
    title: string;
};
type ResearchExecutorDeps = {
    bindResearchRoot(turnId: TurnId, graphId: string): Promise<void>;
    buildSubquestionPlans(prompt: string): DeepResearchSubquestionPlan[];
    completeRun(input: {
        evidence: ResearchEvidenceCard[];
        failureMessages: string[];
        finalizedSubquestions: ResearchSubquestion[];
        graphId: string;
        prompt: string;
        rootVerdictStatus?: VerdictRecord["status"];
        rootVerdictSummary?: string;
        run: ResearchRun;
        turn: Turn;
    }): Promise<string>;
    createRun(input: {
        objective: string;
        subquestionCount: number;
        threadId: ThreadId;
        turnId: TurnId;
    }): Promise<ResearchRun>;
    executeSubquestion(turn: Turn, hostProfile: AgentProfile, activeSkillIds: string[], runId: string, plan: DeepResearchSubquestionPlan, persistSubquestion: (subquestion: ResearchSubquestion) => Promise<void>): Promise<{
        evidence: ResearchEvidenceCard[];
        subquestion: ResearchSubquestion;
    }>;
    failRun(turn: Turn, run: ResearchRun, input: {
        errorCode?: string;
        failureKind: import("@best-agent/protocol").ToolFailureKind;
        graphId: string;
        summary: string;
    }): Promise<never>;
    getEffectiveVerdicts(threadId: ThreadId, nodeIds: string[]): Promise<Map<string, VerdictRecord>>;
    pushItems(items: Item[]): Promise<void>;
    startRunLifecycle(turn: Turn, run: ResearchRun, subquestionCount: number): void;
    classifyFailure(error: unknown): {
        errorCode?: string;
        failureKind: import("@best-agent/protocol").ToolFailureKind;
    };
    persistSubquestions(threadId: ThreadId, runId: string, subquestions: ResearchSubquestion[]): Promise<void>;
    verdictClosureMode: "heuristic" | "kernel";
};
export declare class ResearchExecutor {
    #private;
    constructor(deps: ResearchExecutorDeps);
    execute(input: {
        activeSkillIds: string[];
        hostProfile: AgentProfile;
        prompt: string;
        turn: Turn;
    }): Promise<string>;
}
export {};
//# sourceMappingURL=research-executor.d.ts.map