/**
 * Multi-layer validation for persona configurations
 *
 * This module implements comprehensive validation for persona configurations including
 * schema validation, business rules, tool resolution, and MCP config validation.
 * The PersonaValidator class orchestrates multiple validation layers and provides
 * detailed error reporting with actionable suggestions.
 *
 * @fileoverview Persona configuration validation system
 */
import type { IToolDiscoveryEngine } from "../discovery/types.js";
import { type PersonaConfig, type ValidationResult, type PersonaAssets } from "./types.js";
/**
 * Validation context for providing additional information during validation
 */
export interface ValidationContext {
    /** Path to the persona folder or configuration file */
    personaPath: string;
    /** Expected persona name from folder structure */
    expectedPersonaName?: string;
    /** Whether to perform tool resolution validation */
    checkToolAvailability?: boolean;
    /** Whether to validate MCP config if present */
    validateMcpConfig?: boolean;
    /** Tool discovery engine for tool resolution validation */
    toolDiscoveryEngine?: IToolDiscoveryEngine;
    /** Additional persona assets for comprehensive validation */
    assets?: PersonaAssets;
}
/**
 * Validation options for customizing validation behavior
 */
export interface ValidationOptions {
    /** Whether to include warnings in the result (default: true) */
    includeWarnings?: boolean;
    /** Whether to stop validation on first error (default: false) */
    stopOnFirstError?: boolean;
    /** Whether to perform tool availability checks (default: true) */
    checkToolAvailability?: boolean;
    /** Whether to validate MCP config files (default: true) */
    validateMcpConfig?: boolean;
    /** Custom validation functions for extensibility */
    customValidators?: Array<(config: PersonaConfig, context: ValidationContext) => ValidationResult>;
}
/**
 * Comprehensive persona configuration validator
 *
 * Implements a multi-layer validation system that covers:
 * 1. YAML syntax and schema validation
 * 2. Business rule validation
 * 3. Tool resolution validation
 * 4. MCP config validation
 */
export declare class PersonaValidator {
    private toolDiscoveryEngine?;
    constructor(toolDiscoveryEngine?: IToolDiscoveryEngine);
    /**
     * Validate a persona configuration from parsed data
     *
     * @param config - Parsed persona configuration
     * @param context - Validation context
     * @param options - Validation options
     * @returns Comprehensive validation result
     */
    validatePersonaConfig(config: PersonaConfig, context: ValidationContext, options?: ValidationOptions): Promise<ValidationResult>;
    /**
     * Validate a persona configuration from a file path
     *
     * @param filePath - Path to persona.yaml/yml file
     * @param options - Validation options
     * @returns Comprehensive validation result
     */
    validatePersonaFile(filePath: string, options?: ValidationOptions): Promise<ValidationResult>;
    /**
     * Validate a persona directory (containing persona.yaml/yml)
     *
     * @param directoryPath - Path to persona directory
     * @param options - Validation options
     * @returns Comprehensive validation result
     */
    validatePersonaDirectory(directoryPath: string, options?: ValidationOptions): Promise<ValidationResult>;
    /**
     * Validate business rules for persona configuration
     *
     * @param config - Persona configuration
     * @param context - Validation context
     * @returns Business rule validation result
     */
    private validateBusinessRules;
    /**
     * Validate tool resolution against discovery engine
     *
     * @param config - Persona configuration
     * @param toolDiscoveryEngine - Tool discovery engine
     * @returns Tool resolution validation result
     */
    private validateToolResolution;
    /**
     * Validate MCP configuration file
     *
     * @param mcpConfigPath - Path to mcp.json file
     * @returns MCP config validation result
     */
    private validateMcpConfig;
    /**
     * Find persona configuration file in a directory
     *
     * @param directoryPath - Directory to search
     * @returns Path to config file or null if not found
     */
    private findPersonaConfigFile;
    /**
     * Find MCP config file in a directory
     *
     * @param directoryPath - Directory to search
     * @returns Path to mcp.json file or null if not found
     */
    private findMcpConfigFile;
    /**
     * Check if two names are similar enough to be confusing
     *
     * @param name1 - First name
     * @param name2 - Second name
     * @returns True if names are similar
     */
    private areNamesSimilar;
    /**
     * Merge validation results together
     *
     * @param target - Target validation result to merge into
     * @param source - Source validation result to merge from
     * @param includeWarnings - Whether to include warnings
     */
    private mergeValidationResults;
    /**
     * Set the tool discovery engine for this validator
     *
     * @param toolDiscoveryEngine - Tool discovery engine instance
     */
    setToolDiscoveryEngine(toolDiscoveryEngine: IToolDiscoveryEngine): void;
    /**
     * Get validation statistics
     *
     * @returns Validation statistics
     */
    getValidationStats(): {
        hasToolDiscoveryEngine: boolean;
        supportedFileTypes: readonly string[];
        validationLayers: string[];
    };
}
/**
 * Create a default persona validator instance
 *
 * @param toolDiscoveryEngine - Optional tool discovery engine
 * @returns PersonaValidator instance
 */
export declare function createPersonaValidator(toolDiscoveryEngine?: IToolDiscoveryEngine): PersonaValidator;
/**
 * Quick validation function for simple use cases
 *
 * @param filePath - Path to persona file or directory
 * @param toolDiscoveryEngine - Optional tool discovery engine
 * @param options - Validation options
 * @returns Validation result
 */
export declare function validatePersona(filePath: string, toolDiscoveryEngine?: IToolDiscoveryEngine, options?: ValidationOptions): Promise<ValidationResult>;
/**
 * Batch validation for multiple personas
 *
 * @param paths - Array of file or directory paths
 * @param toolDiscoveryEngine - Optional tool discovery engine
 * @param options - Validation options
 * @returns Map of path to validation result
 */
export declare function validateMultiplePersonas(paths: string[], toolDiscoveryEngine?: IToolDiscoveryEngine, options?: ValidationOptions): Promise<Map<string, ValidationResult>>;
//# sourceMappingURL=validator.d.ts.map