/**
 * Memory REST Controller
 *
 * Exposes agent memory operations via REST API for orchestrator bash skills.
 * Wraps the unified MemoryService to provide HTTP endpoints for storing,
 * retrieving, and recording learnings in agent and project memory.
 *
 * @module controllers/memory/memory.controller
 */
import type { Request, Response, NextFunction } from 'express';
/**
 * POST /api/memory/remember
 *
 * Store knowledge in agent or project memory. The content is categorized
 * and routed to the appropriate memory store based on the scope parameter.
 *
 * @param req - Express request with body: { agentId, content, category, scope, projectPath?, metadata? }
 * @param res - Express response returning { success, entryId }
 * @param next - Express next function for error propagation
 *
 * @example
 * ```
 * POST /api/memory/remember
 * {
 *   "agentId": "dev-001",
 *   "content": "Always validate user input before processing",
 *   "category": "pattern",
 *   "scope": "agent"
 * }
 * ```
 */
export declare function remember(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/memory/recall
 *
 * Retrieve relevant knowledge from agent and/or project memory.
 * Performs relevance-based search across the specified scope(s).
 *
 * @param req - Express request with body: { agentId, context, scope?, limit?, projectPath? }
 * @param res - Express response returning { success, data: RecallResult }
 * @param next - Express next function for error propagation
 *
 * @example
 * ```
 * POST /api/memory/recall
 * {
 *   "agentId": "dev-001",
 *   "context": "error handling in API endpoints",
 *   "scope": "both",
 *   "projectPath": "/path/to/project",
 *   "limit": 10
 * }
 * ```
 */
export declare function recall(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/memory/supersede (Memory Phase 1 — M4)
 *
 * Mark an existing memory entry as superseded by a newer one. Both entries
 * must already exist in the agent's memory store. The old entry is hidden
 * from default recall after this call but remains in the raw store for
 * audit purposes.
 *
 * @param req - Express request with body: { agentId, oldId, newId, reason? }
 * @param res - Express response returning { success, data: SupersedeResult }
 * @param next - Express next function for error propagation
 *
 * @example
 * ```
 * POST /api/memory/supersede
 * {
 *   "agentId": "crewly-product-max-c69ce8e6",
 *   "oldId": "rk-pricing-799",
 *   "newId": "rk-pricing-800-plus-credits",
 *   "reason": "Steve updated pricing 2026-05-01"
 * }
 * ```
 */
export declare function supersedeMemory(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/memory/record-learning
 *
 * Quickly record a learning or discovery. The learning is stored in
 * project memory and optionally promoted to agent memory if it contains
 * role-relevant patterns.
 *
 * @param req - Express request with body: { agentId, agentRole, projectPath, learning, relatedTask?, relatedFiles? }
 * @param res - Express response returning { success }
 * @param next - Express next function for error propagation
 *
 * @example
 * ```
 * POST /api/memory/record-learning
 * {
 *   "agentId": "dev-001",
 *   "agentRole": "developer",
 *   "projectPath": "/path/to/project",
 *   "learning": "Always use async/await for database operations",
 *   "relatedTask": "TICKET-456",
 *   "relatedFiles": ["src/db/queries.ts"]
 * }
 * ```
 */
export declare function recordLearning(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/memory/goals
 *
 * Set or append a project goal.
 *
 * @param req - Express request with body: { goal, projectPath, setBy? }
 * @param res - Express response returning { success }
 * @param next - Express next function for error propagation
 */
export declare function setGoal(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/memory/goals
 *
 * Get active project goals.
 *
 * @param req - Express request with query: { projectPath }
 * @param res - Express response returning { success, data }
 * @param next - Express next function for error propagation
 */
export declare function getGoals(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/memory/focus
 *
 * Update the team's current focus.
 *
 * @param req - Express request with body: { focus, projectPath, updatedBy? }
 * @param res - Express response returning { success }
 * @param next - Express next function for error propagation
 */
export declare function updateFocus(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/memory/focus
 *
 * Get the team's current focus.
 *
 * @param req - Express request with query: { projectPath }
 * @param res - Express response returning { success, data }
 * @param next - Express next function for error propagation
 */
export declare function getFocus(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/memory/daily-log
 *
 * Append an entry to today's daily log.
 *
 * @param req - Express request with body: { projectPath, agentId, role, entry }
 * @param res - Express response returning { success }
 * @param next - Express next function for error propagation
 */
export declare function appendDailyLog(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/memory/daily-log
 *
 * Get today's daily log.
 *
 * @param req - Express request with query: { projectPath }
 * @param res - Express response returning { success, data }
 * @param next - Express next function for error propagation
 */
export declare function getDailyLog(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/memory/record-success
 *
 * Record a successful pattern or approach.
 *
 * @param req - Express request with body: { projectPath, teamMemberId, description, context? }
 * @param res - Express response returning { success }
 * @param next - Express next function for error propagation
 */
export declare function recordSuccess(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/memory/record-failure
 *
 * Record a failed approach or pitfall to avoid.
 *
 * @param req - Express request with body: { projectPath, teamMemberId, description, context? }
 * @param res - Express response returning { success }
 * @param next - Express next function for error propagation
 */
export declare function recordFailure(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/memory/my-context
 *
 * Retrieve combined context for an agent, including relevant memories,
 * project goals, current focus, today's daily log, and recent learnings.
 * This provides a single-call context briefing for agent startup or task transitions.
 *
 * @param req - Express request with body: { agentId, agentRole, projectPath }
 * @param res - Express response returning { success, data: { memories, goals, focus, dailyLog, learnings } }
 * @param next - Express next function for error propagation
 *
 * @example
 * ```
 * POST /api/memory/my-context
 * {
 *   "agentId": "dev-001",
 *   "agentRole": "developer",
 *   "projectPath": "/path/to/project"
 * }
 * ```
 */
export declare function getMyContext(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/memory/user-profile
 *
 * Get the shared user profile. Returns the full profile object,
 * or an empty object if no profile has been created yet.
 *
 * @param req - Express request (no parameters required)
 * @param res - Express response returning { success, data: SharedUserProfile }
 */
export declare function getUserProfile(req: Request, res: Response): Promise<void>;
/**
 * POST /api/memory/user-profile
 *
 * Update the shared user profile with a partial merge.
 * The `updatedBy` field is required to track who made the change.
 *
 * Merge strategy:
 * - Top-level scalars are overwritten
 * - `preferences` is shallow-merged
 * - `notes` and `prohibitions` are appended (deduplicated)
 *
 * @param req - Express request with body: { updatedBy, ...profileFields }
 * @param res - Express response returning { success, data: SharedUserProfile }
 *
 * @example
 * ```
 * POST /api/memory/user-profile
 * {
 *   "updatedBy": "crewly-orc",
 *   "language": "zh-CN",
 *   "reportingStyle": "detailed"
 * }
 * ```
 */
export declare function updateUserProfile(req: Request, res: Response): Promise<void>;
//# sourceMappingURL=memory.controller.d.ts.map