/**
 * Project Validator for Cross-Project User Story Targeting
 *
 * Validates that User Story project fields reference valid projects
 * in either projectMappings or multiProject.projects config.
 *
 * @module core/living-docs/validators/project-validator
 * @since v0.33.0
 */
import type { UserStoryData } from '../types.js';
import { Logger } from '../../../utils/logger.js';
/**
 * Project mapping entry from config
 */
export interface ProjectMapping {
    github?: {
        owner: string;
        repo: string;
    };
    jira?: {
        project: string;
        board?: string;
    };
    ado?: {
        project: string;
        areaPath?: string;
    };
}
/**
 * Config structure for validation
 */
export interface ProjectValidationConfig {
    projectMappings?: Record<string, ProjectMapping>;
    multiProject?: {
        enabled?: boolean;
        projects?: Array<{
            id: string;
            name: string;
        }>;
    };
}
/**
 * Validation result for a single user story
 */
export interface USProjectValidationResult {
    usId: string;
    project: string | undefined;
    isValid: boolean;
    hasMapping: boolean;
    warning?: string;
}
/**
 * Overall validation result
 */
export interface ProjectValidationResult {
    valid: boolean;
    validCount: number;
    invalidCount: number;
    unmappedCount: number;
    results: USProjectValidationResult[];
    warnings: string[];
}
/**
 * Project Validator class
 */
export declare class ProjectValidator {
    private logger;
    constructor(options?: {
        logger?: Logger;
    });
    /**
     * Get all valid project IDs from config
     */
    getValidProjectIds(config: ProjectValidationConfig): Set<string>;
    /**
     * Check if a project has external tool mapping
     */
    hasExternalMapping(projectId: string, config: ProjectValidationConfig): boolean;
    /**
     * Validate a single user story's project field
     */
    validateUSProject(us: UserStoryData, config: ProjectValidationConfig): USProjectValidationResult;
    /**
     * Validate all user stories in an increment
     */
    validateAllUSProjects(userStories: UserStoryData[], config: ProjectValidationConfig): ProjectValidationResult;
    /**
     * Log validation results
     */
    logValidationResults(result: ProjectValidationResult): void;
}
//# sourceMappingURL=project-validator.d.ts.map