/**
 * Runtime Validation Utilities
 * Following Phase 2g: Provides runtime type checking that matches compile-time types
 * Focused on Education industry validation patterns
 */
import type { ValidationContext } from './index';
import type { EducationUser, Option, Result, TypeAssertion, TypeGuard } from './enhanced-types';
/**
 * Validation result with detailed error information
 */
export interface ValidationResult<T = unknown> {
    valid: boolean;
    value?: T;
    errors: ValidationError[];
    warnings?: string[];
    metadata?: {
        validatedAt: string;
        validatorVersion: string;
        checksPerformed: number;
    };
}
/**
 * Detailed validation error
 */
export interface ValidationError {
    path: string;
    message: string;
    expected: string;
    actual: string;
    code: string;
}
/**
 * Create a validation result
 */
export declare function createValidationResult<T>(valid: boolean, value?: T, errors?: ValidationError[], warnings?: string[]): ValidationResult<T>;
/**
 * Create a validation error
 */
export declare function createValidationError(path: string, message: string, expected: string, actual: string, code?: string): ValidationError;
/**
 * Validate and type guard for EducationUser
 */
export declare function validateEducationUser(value: unknown): ValidationResult<EducationUser>;
/**
 * Type guard for EducationUser
 */
export declare const isEducationUser: TypeGuard<EducationUser>;
/**
 * Validate education context for compliance
 */
export declare function validateEducationContext(context: unknown): ValidationResult<ValidationContext>;
/**
 * Validate a Result type
 */
export declare function validateResult<T, E>(value: unknown, validateSuccess: (v: unknown) => ValidationResult<T>, validateError: (v: unknown) => ValidationResult<E>): ValidationResult<Result<T, E>>;
/**
 * Validate an Option type
 */
export declare function validateOption<T>(value: unknown, validateSome: (v: unknown) => ValidationResult<T>): ValidationResult<Option<T>>;
/**
 * Assert that a value is an EducationUser
 */
export declare const assertEducationUser: TypeAssertion<EducationUser>;
/**
 * Assert that a context is valid for education operations
 */
export declare const assertEducationContext: TypeAssertion<ValidationContext>;
/**
 * Create a safe validator that returns Result<T, ValidationError[]>
 */
export declare function createSafeValidator<T>(validator: (value: unknown) => ValidationResult<T>): (value: unknown) => Result<T, ValidationError[]>;
/**
 * Chain multiple validators
 */
export declare function chainValidators<T>(...validators: Array<(value: T) => ValidationResult<T>>): (value: unknown) => ValidationResult<T>;
/**
 * Create a validator for arrays of a specific type
 */
export declare function createArrayValidator<T>(itemValidator: (value: unknown) => ValidationResult<T>): (value: unknown) => ValidationResult<T[]>;
export declare const educationValidators: {
    user: typeof validateEducationUser;
    context: typeof validateEducationContext;
    isEducationUser: TypeGuard<EducationUser>;
    assertEducationUser: TypeAssertion<EducationUser>;
    assertEducationContext: TypeAssertion<ValidationContext>;
};
//# sourceMappingURL=validation-utilities.d.ts.map