export interface RecoveryHint {
    error_code: string;
    suggestion: string;
    next_tool?: string;
}
export declare const RECOVERY_HINTS: Record<string, RecoveryHint[]>;
/**
 * Tools that are intentionally NOT in `RECOVERY_HINTS` despite being
 * `mutating` or `destructive`. Read by the lint at
 * `scripts/lint-mcp-tools.ts` (ADR-180 Rule 10) — every mutating/
 * destructive tool must either appear in `RECOVERY_HINTS` or here.
 *
 * Three buckets:
 *
 *   `rich_response`: returns a structured response shape that already
 *   carries the "what next" affordance. The resolver tools populate
 *   `recovery_hints: string[]` on the response itself; import/export
 *   tools return a structured download envelope; cascade runners are
 *   fire-and-forget; the upload pair returns presigned-URL state.
 *
 *   `terminal`: no plausible recovery. One-shot tools, idempotent acks,
 *   or validation-only writes whose only failure mode is a clear schema
 *   error the agent can fix from the error message alone.
 *
 *   `dispatcher`: discriminated-branch tool that is a renaming candidate
 *   per the agreement-types audit. Adding hints to the dispatcher would
 *   be wasted work if the tools split.
 *
 * If a tool is added to `RECOVERY_HINTS`, remove it from here. The lint
 * emits a stale-skip warning when both are populated for the same tool.
 */
export declare const INTENTIONALLY_SKIPPED: ReadonlyMap<string, "rich_response" | "terminal" | "dispatcher">;
export declare function getRecoveryHint(toolName: string, errorCode: string): RecoveryHint | undefined;
//# sourceMappingURL=recovery-hints.d.ts.map