/**
 * MissionPolicy Controller — HTTP handlers for Mission Policy CRUD API
 *
 * Endpoints:
 * - GET  /api/missions/:id/policy       — get a mission's policy
 * - PUT  /api/missions/:id/policy       — update a mission's policy
 * - POST /api/missions/:id/policy/check — dry-run: check if an action is allowed
 *
 * Missions are stored as individual JSON files at:
 *   `{projectPath}/.crewly/missions/{id}.json`
 *
 * @module controllers/mission/mission-policy.controller
 */
import type { Request, Response } from 'express';
import type { Mission } from '../../types/v2/index.js';
/**
 * Loads a Mission from disk by ID.
 *
 * @param missionId - The mission ID to load
 * @returns The Mission object, or null if not found
 */
declare function loadMission(missionId: string): Promise<Mission | null>;
/**
 * Persists a Mission to disk.
 *
 * @param mission - The Mission object to save
 */
declare function saveMission(mission: Mission): Promise<void>;
/**
 * Returns the MissionPolicy for a given mission.
 *
 * @param req - Express request with mission ID in params
 * @param res - Express response with the policy object
 */
export declare function getPolicy(req: Request, res: Response): Promise<void>;
/**
 * Updates the MissionPolicy for a given mission.
 * Accepts partial updates — only the fields provided are changed.
 *
 * Request body: UpdatePolicyInput (partial MissionPolicy fields)
 *
 * @param req - Express request with mission ID in params and policy updates in body
 * @param res - Express response with the updated policy
 */
export declare function updatePolicy(req: Request, res: Response): Promise<void>;
/**
 * Performs a dry-run check to see if a given action would be allowed
 * under the mission's current policy. No side effects.
 *
 * Request body:
 * ```json
 * {
 *   "action": "create_task",
 *   "context": { "currentCost": 45.0, "failureCount": 2 }
 * }
 * ```
 *
 * @param req - Express request with mission ID in params and action/context in body
 * @param res - Express response with the PolicyDecision
 */
export declare function checkPolicy(req: Request, res: Response): Promise<void>;
/**
 * Resets the enforcement service singleton.
 * Intended for test isolation only.
 */
export declare function resetEnforcementService(): void;
/** Exposed for testing: load a mission from disk. */
export { loadMission as _loadMission };
/** Exposed for testing: save a mission to disk. */
export { saveMission as _saveMission };
//# sourceMappingURL=mission-policy.controller.d.ts.map