import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { type RiskLevel, type AutoApproveRisk } from "../registry/types.js";
export interface ElicitationResult {
    /** Whether the operation should proceed. */
    proceed: boolean;
    /** Why the operation was stopped, if applicable. */
    reason?: "declined" | "cancelled";
    /** How the confirmation was resolved — maps directly to ConfirmationMethod for audit. */
    method: "elicited" | "auto_approved" | "not_required" | "blocked" | "skipped";
}
/**
 * Configure the elicitation module. Call once at startup.
 */
export declare function configureElicitation(opts: {
    autoApproveRisk?: AutoApproveRisk;
}): void;
/**
 * Check whether the connected client advertises form elicitation support.
 */
export declare function clientSupportsElicitation(server: Server): boolean;
/**
 * Prompt the user to confirm a write operation via MCP form elicitation.
 *
 * Decision flow:
 *  1. If the operation risk is at or below `HARNESS_AUTO_APPROVE_RISK`, proceed
 *     immediately (autonomous mode for CI/CD agents).
 *  2. If the client supports elicitation, prompt the user.
 *  3. If the client lacks elicitation:
 *     - `read` / `low_write` → proceed silently.
 *     - `medium_write` / `high_write` / `destructive` → BLOCK.
 */
export declare function confirmViaElicitation({ server, toolName, message, risk, autoApproveRisk, }: {
    server: McpServer;
    toolName: string;
    message: string;
    /** The risk level of the operation (from operationPolicy). */
    risk: RiskLevel;
    /** Optional per-session threshold. Falls back to the process default. */
    autoApproveRisk?: AutoApproveRisk;
}): Promise<ElicitationResult>;
//# sourceMappingURL=elicitation.d.ts.map