/**
 * Payload carried by the native `tool-call-suspended` event when `submit_plan` pauses.
 * Hosts read this to render the plan for review with approve/reject controls.
 */
export interface SubmitPlanSuspendPayload {
    title: string;
    plan: string;
}
/**
 * The action a host resumes a suspended `submit_plan` call with.
 *
 * `approved` means the user accepted the plan and the agent should proceed. `rejected`
 * means the user wants revisions; the optional `feedback` is surfaced to the model so it
 * can revise and submit again.
 *
 * Hosts that layer additional behavior on approval (e.g. a Harness switching from a
 * planning mode to an execution mode) drive that from their own response handling; the
 * tool itself only reports the outcome back to the model.
 */
export interface SubmitPlanResumeData {
    action: 'approved' | 'rejected';
    feedback?: string;
}
/**
 * Built-in, agent-agnostic tool: submit an implementation plan for user review.
 *
 * Pausing uses the agent-native tool suspension primitive: the tool calls
 * `suspend({ title, plan })`, which makes the agent emit a `tool-call-suspended` event
 * and persist run state. The host renders the plan, collects an approve/reject decision,
 * and continues the run via `agent.resumeStream({ action, feedback })`; the tool re-runs
 * with `resumeData` set to that decision and reports it back to the model.
 *
 * This tool is deliberately host-agnostic: it does not know about Harness modes or any
 * UI. A plain Agent (e.g. embedded in Studio or a customer app) can use it directly, and
 * a Harness can layer mode-switch behavior on top of the approval in its own response
 * handling without the tool needing to change.
 *
 * When executed without an agent `suspend` (e.g. direct invocation outside an agent run),
 * the tool returns the plan as readable text so it is still surfaced.
 */
export declare const submitPlanTool: import("..").Tool<{
    plan: string;
    title?: string | undefined;
}, unknown, {
    title: string;
    plan: string;
}, {
    action: "rejected" | "approved";
    feedback?: string | undefined;
}, import("..").ToolExecutionContext<{
    title: string;
    plan: string;
}, {
    action: "rejected" | "approved";
    feedback?: string | undefined;
}, unknown>, "submit_plan", unknown>;
//# sourceMappingURL=submit-plan.d.ts.map