import type { ChorusMcpClient } from "../chorus/mcp-client"; import type { OpenCodeChorusConfig } from "../config/schema"; import type { PlanningLifecycle } from "../lifecycle/planning-lifecycle"; import { dispatchProposalReviewer } from "../reviewers/reviewer-dispatcher"; import { waitForReviewerVerdict } from "../reviewers/reviewer-waiter"; import type { StateStore } from "../state/state-store"; type ToolExecuteAfterInput = { tool: string; args: unknown; sessionID: string; }; type ToolExecuteAfterOutput = { title: string; output: string; metadata: unknown; }; type ReviewerToast = { started(input: { reviewJobId: string; targetType: "proposal" | "task"; displayName: string; round: number; maxRounds: number; }): Promise; finished(input: { reviewJobId: string; targetType: "proposal" | "task"; displayName: string; round: number; maxRounds: number; result: Awaited>; }): Promise; }; type CreateToolExecuteAfterHookOptions = { config: Pick; stateStore: StateStore; planningLifecycle: PlanningLifecycle; context: { client: Parameters[0]["client"]; directory: string; }; chorusClient: ChorusMcpClient; reviewerToast?: ReviewerToast; }; export declare function createToolExecuteAfterHook(options: CreateToolExecuteAfterHookOptions): (input: ToolExecuteAfterInput, output: ToolExecuteAfterOutput) => Promise; export {};