/**
 * Chat Controller
 *
 * HTTP request handlers for chat functionality. Provides endpoints for
 * sending messages, managing conversations, and retrieving chat history.
 *
 * @module controllers/chat/chat.controller
 */
import type { Request, Response, NextFunction } from 'express';
import type { MessageQueueService } from '../../services/messaging/message-queue.service.js';
/**
 * Set the message queue service for enqueuing messages to the orchestrator.
 * Called during server initialization.
 *
 * @param service - The MessageQueueService instance
 */
export declare function setMessageQueueService(service: MessageQueueService): void;
/**
 * Set the thread status queue service for thread status API endpoints.
 * Called during server initialization.
 *
 * @param service - The ThreadStatusQueueService instance
 */
export declare function setThreadStatusQueueService(service: import('../../services/messaging/thread-status-queue.service.js').ThreadStatusQueueService): void;
/**
 * POST /api/chat/send
 *
 * Send a message to the orchestrator. Creates a new conversation if
 * conversationId is not provided.
 *
 * @param req - Request with body: { content: string, conversationId?: string, metadata?: object }
 * @param res - Response with sent message and conversation
 */
export declare function sendMessage(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/chat/messages
 *
 * Get messages for a conversation with optional filtering.
 *
 * @param req - Request with query params for filtering
 * @param res - Response with array of messages
 */
export declare function getMessages(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/chat/messages/:conversationId/:messageId
 *
 * Get a single message by ID.
 *
 * @param req - Request with conversationId and messageId params
 * @param res - Response with the message
 */
export declare function getMessage(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/chat/agent-response
 *
 * Store an agent's response message in a chat conversation. Used by
 * orchestrator bash skills to post agent responses directly to the
 * chat without going through terminal output parsing.
 *
 * @param req - Request with body: { content, senderName, senderType?, conversationId? }
 * @param res - Response with { success, data: { messageId, conversationId } }
 * @param next - Express next function for error propagation
 *
 * @example
 * ```
 * POST /api/chat/agent-response
 * {
 *   "content": "Task completed successfully. The API endpoint is live.",
 *   "senderName": "Orchestrator",
 *   "senderType": "orchestrator",
 *   "conversationId": "conv-abc123"
 * }
 * ```
 */
export declare function agentResponse(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/chat/conversations
 *
 * List all conversations with optional filtering.
 *
 * @param req - Request with query params for filtering
 * @param res - Response with array of conversations
 */
export declare function getConversations(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/chat/conversations/current
 *
 * Get the current (most recent active) conversation.
 * Creates a new conversation if none exists.
 *
 * @param req - Request
 * @param res - Response with current conversation
 */
export declare function getCurrentConversation(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/chat/conversations/:id
 *
 * Get a single conversation by ID.
 *
 * @param req - Request with conversation ID param
 * @param res - Response with the conversation
 */
export declare function getConversation(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/chat/conversations
 *
 * Create a new conversation.
 *
 * @param req - Request with body: { title?: string }
 * @param res - Response with created conversation
 */
export declare function createConversation(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * PUT /api/chat/conversations/:id
 *
 * Update a conversation's title.
 *
 * @param req - Request with conversation ID param and body: { title: string }
 * @param res - Response with updated conversation
 */
export declare function updateConversation(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * PUT /api/chat/conversations/:id/archive
 *
 * Archive a conversation.
 *
 * @param req - Request with conversation ID param
 * @param res - Response confirming archive
 */
export declare function archiveConversation(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * PUT /api/chat/conversations/:id/unarchive
 *
 * Unarchive a conversation.
 *
 * @param req - Request with conversation ID param
 * @param res - Response confirming unarchive
 */
export declare function unarchiveConversation(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * DELETE /api/chat/conversations/:id
 *
 * Delete a conversation and all its messages.
 *
 * @param req - Request with conversation ID param
 * @param res - Response confirming deletion
 */
export declare function deleteConversation(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/chat/conversations/:id/clear
 *
 * Clear all messages in a conversation.
 *
 * @param req - Request with conversation ID param
 * @param res - Response confirming clear
 */
export declare function clearConversation(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/chat/statistics
 *
 * Get chat statistics.
 *
 * @param req - Request
 * @param res - Response with statistics
 */
export declare function getStatistics(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/chat/thread-status
 *
 * Returns all thread status entries. Supports optional status filter.
 *
 * @param req - Request with optional query: { status?: ThreadStatus }
 * @param res - Response with array of ThreadStatusEntry
 */
export declare function getThreadStatusList(req: Request, res: Response, next: NextFunction): void;
/**
 * GET /api/chat/thread-status/stats
 *
 * Returns thread status queue statistics.
 *
 * @param req - Request
 * @param res - Response with ThreadStatusStats
 */
export declare function getThreadStatusStats(req: Request, res: Response, next: NextFunction): void;
/**
 * GET /api/chat/thread-status/:threadKey
 *
 * Returns a single thread status entry by threadKey.
 *
 * @param req - Request with threadKey param
 * @param res - Response with ThreadStatusEntry
 */
export declare function getThreadStatusByKey(req: Request, res: Response, next: NextFunction): void;
/**
 * GET /api/chat/highlights
 *
 * Retrieve highlighted messages (decisions, questions, blockers, task completions)
 * from all conversations. Useful for dashboard activity feeds.
 *
 * @param req - Request with query params: { since?: string, limit?: number }
 * @param res - Response with array of chat highlights
 * @param next - Express next function for error propagation
 *
 * @example
 * ```
 * GET /api/chat/highlights?since=2026-03-25T00:00:00.000Z&limit=10
 * ```
 */
export declare function handleGetHighlights(req: Request, res: Response, next: NextFunction): Promise<void>;
//# sourceMappingURL=chat.controller.d.ts.map