import { Request, Response } from 'express';
import type { ApiContext } from '../types.js';
export declare function createProject(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getProjects(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getProject(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getProjectStatus(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function startProject(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function stopProject(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function restartProject(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function assignTeamsToProject(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function unassignTeamFromProject(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getProjectFiles(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getFileContent(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getAgentmuxMarkdownFiles(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function saveMarkdownFile(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getProjectCompletion(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function deleteProject(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getProjectStats(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function openProjectInFinder(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function createSpecFile(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getSpecFileContent(this: ApiContext, req: Request, res: Response): Promise<void>;
export declare function getProjectContext(this: ApiContext, req: Request, res: Response): Promise<void>;
/**
 * Get alignment status for a project (stub implementation)
 * Returns default status indicating no alignment issues
 */
export declare function getAlignmentStatus(this: ApiContext, req: Request, res: Response): Promise<void>;
/**
 * Continue with misalignment endpoint (stub implementation)
 * Acknowledges user decision to continue despite alignment issues
 */
export declare function continueWithMisalignment(this: ApiContext, req: Request, res: Response): Promise<void>;
/**
 * Robust cleanup of scheduled messages for a project
 */
export declare function cleanupProjectScheduledMessages(this: ApiContext, projectId: string): Promise<{
    found: number;
    cancelled: number;
    errors: string[];
}>;
/**
 * GET /api/projects/search?q=keyword
 *
 * Search across project names and task filenames within their .crewly/tasks/
 * directories. Returns matching projects and tasks with match source annotation.
 *
 * @param req - Request with query param: { q: string }
 * @param res - Response with array of ProjectSearchResult
 *
 * @example
 * ```
 * GET /api/projects/search?q=auth
 * // { success: true, data: [{ id, name, matchType: 'project_name' }, ...] }
 * ```
 */
export declare function handleSearch(this: ApiContext, req: Request, res: Response): Promise<void>;
//# sourceMappingURL=project.controller.d.ts.map