/**
 * Multi-Project Detector
 *
 * Detects multi-project/umbrella configuration from:
 * 1. config.json (umbrella.enabled, multiProject.enabled)
 * 2. childRepos configuration
 * 3. Project folders in specs/
 * 4. Sync profile projects
 *
 * Used by PM Agent and spec generators
 * to determine whether to generate project-scoped user stories.
 *
 * @module utils/multi-project-detector
 */
/**
 * Project configuration detected from config or folder structure
 */
export interface DetectedProject {
    id: string;
    prefix: string;
    name: string;
    path?: string;
}
/**
 * Multi-project detection result
 */
export interface MultiProjectDetectionResult {
    /** Whether multi-project mode is active */
    isMultiProject: boolean;
    /** Reason for detection (for debugging/logging) */
    detectionReason: string;
    /** Detected projects (empty if single-project) */
    projects: DetectedProject[];
    /**
     * @deprecated Always false. Use `hasWorkspace` instead.
     * Legacy umbrella.enabled/multiProject.enabled checks have been removed.
     */
    umbrellaEnabled: boolean;
    /** Whether board/area path mapping is configured */
    hasBoardMapping: boolean;
    /** Primary project prefix for cross-cutting stories (e.g., 'AUTH' for auth) */
    crossCuttingPrefix?: string;
    /** Whether workspace config is present in config.json */
    hasWorkspace: boolean;
}
/**
 * Infer project prefix from project ID/name
 */
export declare function inferProjectPrefix(projectId: string): string;
/**
 * Detect multi-project configuration
 *
 * @param projectRoot - Path to project root (default: process.cwd())
 * @returns Detection result with project information
 */
export declare function detectMultiProjectMode(projectRoot?: string): MultiProjectDetectionResult;
/**
 * Get project prefixes for user story generation
 *
 * @param projectRoot - Path to project root
 * @returns Array of project prefixes (e.g., ['FE', 'BE', 'SHARED'])
 */
export declare function getProjectPrefixes(projectRoot?: string): string[];
/**
 * Get project by prefix
 *
 * @param prefix - Project prefix (e.g., 'FE')
 * @param projectRoot - Path to project root
 * @returns Project or undefined
 */
export declare function getProjectByPrefix(prefix: string, projectRoot?: string): DetectedProject | undefined;
/**
 * Format user story ID with project prefix (if multi-project)
 *
 * @param storyNumber - Story number (1, 2, 3...)
 * @param projectPrefix - Optional project prefix (e.g., 'FE')
 * @param projectRoot - Path to project root
 * @returns Formatted ID (e.g., 'US-FE-001' or 'US-001')
 */
export declare function formatUserStoryId(storyNumber: number, projectPrefix?: string, projectRoot?: string): string;
/**
 * Format acceptance criteria ID with project prefix (if multi-project)
 *
 * @param userStoryNumber - User story number (1, 2, 3...)
 * @param acNumber - Acceptance criteria number within story (1, 2, 3...)
 * @param projectPrefix - Optional project prefix (e.g., 'FE')
 * @returns Formatted ID (e.g., 'AC-FE-US1-01' or 'AC-US1-01')
 */
export declare function formatAcceptanceCriteriaId(userStoryNumber: number, acNumber: number, projectPrefix?: string): string;
/**
 * Generate template variables for multi-project spec
 *
 * @param detection - Multi-project detection result
 * @returns Template variable map
 */
export declare function generateMultiProjectTemplateVars(detection: MultiProjectDetectionResult): Record<string, string>;
//# sourceMappingURL=multi-project-detector.d.ts.map