/**
 * Plan Approval Plugin — Trellis plugin for multi-turn planning with
 * buffered mutations and user approval.
 *
 * Registers the plan approval ontology and provides agent tool definitions
 * that the harness can register for plan-mode interactions.
 *
 * @module trellis/plugins/plan-approval
 */
import type { PluginDef } from '../../core/plugins/types.js';
import type { ToolHandler } from '../../core/agents/types.js';
import type { PlanManager } from './plan-manager.js';
/**
 * Create the plan approval plugin instance.
 */
export declare function createPlanApprovalPlugin(): PluginDef;
/**
 * Context required by plan approval tools.
 */
export interface PlanToolContext {
    planManager: PlanManager;
}
/**
 * Tool: enterPlanMode
 *
 * Agent calls this when it wants to plan a set of operations before
 * executing them. Subsequent plan* tool calls buffer operations.
 */
export declare function createEnterPlanModeTool(ctx: PlanToolContext): {
    def: {
        name: string;
        description: string;
        schema: string;
    };
    handler: ToolHandler;
};
/**
 * Tool: planCreateEntity
 *
 * Buffer a createEntity operation in the active plan.
 */
export declare function createPlanCreateEntityTool(ctx: PlanToolContext): {
    def: {
        name: string;
        description: string;
        schema: string;
    };
    handler: ToolHandler;
};
/**
 * Tool: planUpdateEntity
 */
export declare function createPlanUpdateEntityTool(ctx: PlanToolContext): {
    def: {
        name: string;
        description: string;
        schema: string;
    };
    handler: ToolHandler;
};
/**
 * Tool: planAddLink
 */
export declare function createPlanAddLinkTool(ctx: PlanToolContext): {
    def: {
        name: string;
        description: string;
        schema: string;
    };
    handler: ToolHandler;
};
/**
 * Tool: submitPlan
 *
 * Submit the active plan for user review. This signals the harness to
 * pause the agent loop and yield control to the caller.
 *
 * The tool result includes `_planPending: true` which the harness
 * recognizes as a signal to set run status to `plan_pending`.
 */
export declare function createSubmitPlanTool(ctx: PlanToolContext): {
    def: {
        name: string;
        description: string;
        schema: string;
    };
    handler: ToolHandler;
};
/**
 * Tool: cancelPlan
 */
export declare function createCancelPlanTool(ctx: PlanToolContext): {
    def: {
        name: string;
        description: string;
        schema: string;
    };
    handler: ToolHandler;
};
/**
 * Register all plan approval tools with an AgentHarness.
 */
export declare function registerPlanTools(harness: {
    registerTool: (def: {
        name: string;
        description: string;
        schema?: string;
    }, handler: ToolHandler) => Promise<string>;
}, ctx: PlanToolContext): Promise<string[]>;
//# sourceMappingURL=plugin.d.ts.map