/**
 * Validation result
 */
export interface IValidationResult {
    /**
     * Whether the validation passed
     */
    valid: boolean;
    /**
     * Validation errors if any
     */
    errors?: string[];
    /**
     * Validated configuration (may include defaults)
     */
    config?: any;
}
/**
 * Validation schema types
 */
export type ValidationSchema = Record<string, {
    /**
     * Type of the value
     */
    type: 'string' | 'number' | 'boolean' | 'object' | 'array';
    /**
     * Whether the field is required
     */
    required?: boolean;
    /**
     * Default value if not specified
     */
    default?: any;
    /**
     * Minimum value (for numbers)
     */
    min?: number;
    /**
     * Maximum value (for numbers)
     */
    max?: number;
    /**
     * Minimum length (for strings or arrays)
     */
    minLength?: number;
    /**
     * Maximum length (for strings or arrays)
     */
    maxLength?: number;
    /**
     * Pattern to match (for strings)
     */
    pattern?: RegExp;
    /**
     * Allowed values (for strings, numbers)
     */
    enum?: any[];
    /**
     * Nested schema (for objects)
     */
    schema?: ValidationSchema;
    /**
     * Item schema (for arrays)
     */
    items?: {
        type: 'string' | 'number' | 'boolean' | 'object';
        schema?: ValidationSchema;
    };
    /**
     * Custom validation function
     */
    validate?: (value: any) => boolean | string;
}>;
/**
 * Configuration validator
 * Validates configuration objects against schemas and provides default values
 */
export declare class ConfigValidator {
    /**
     * Validate a configuration object against a schema
     *
     * @param config Configuration object to validate
     * @param schema Validation schema
     * @returns Validation result
     */
    static validate<T>(config: T, schema: ValidationSchema): IValidationResult;
    /**
     * Apply defaults to a configuration object based on a schema
     *
     * @param config Configuration object to apply defaults to
     * @param schema Validation schema with defaults
     * @returns Configuration with defaults applied
     */
    static applyDefaults<T>(config: T, schema: ValidationSchema): T;
    /**
     * Throw a validation error if the configuration is invalid
     *
     * @param config Configuration to validate
     * @param schema Validation schema
     * @returns Validated configuration with defaults
     * @throws ValidationError if validation fails
     */
    static validateOrThrow<T>(config: T, schema: ValidationSchema): T;
}
