import type { StorageService } from '../core/storage.service.js';
/**
 * Represents a single search result from a project search query
 */
export interface ProjectSearchResult {
    /** Project ID */
    id: string;
    /** Project name */
    name: string;
    /** Whether the match was on the project name or a task filename */
    matchType: 'project_name' | 'task_name';
    /** The human-readable task name (only for task_name matches) */
    taskName?: string;
    /** Relative path to the task file within .crewly/tasks/ (only for task_name matches) */
    taskPath?: string;
    /** Parent milestone folder name (only for task_name matches) */
    milestone?: string;
}
/**
 * Service for searching across project names and task filenames.
 *
 * Scans the storage-backed project list and each project's `.crewly/tasks/`
 * directory to find matches against a user-supplied query string.
 */
export declare class ProjectSearchService {
    private storageService;
    /**
     * Creates a new ProjectSearchService instance
     *
     * @param storageService - The storage service used to retrieve project metadata
     */
    constructor(storageService: StorageService);
    /**
     * Searches project names and task filenames for the given query.
     *
     * The search is case-insensitive. Results are sorted so that project_name
     * matches appear before task_name matches.
     *
     * @param query - The search term to match against project names and task filenames
     * @returns Array of search results sorted with project_name matches first
     *
     * @example
     * ```typescript
     * const service = new ProjectSearchService(storageService);
     * const results = await service.search('auth');
     * // [{ id: '1', name: 'Auth Service', matchType: 'project_name' }, ...]
     * ```
     */
    search(query: string): Promise<ProjectSearchResult[]>;
    /**
     * Scans a project's .crewly/tasks/ directory recursively for .md files
     * whose filenames match the query.
     *
     * @param projectId - The project ID to associate with results
     * @param projectName - The project name to associate with results
     * @param projectPath - Absolute filesystem path to the project root
     * @param lowerQuery - The lowercased search query
     * @returns Array of task_name search results
     */
    private searchTaskFiles;
}
//# sourceMappingURL=project-search.service.d.ts.map