/** * Input validation and sanitization utilities * Copyright (c) 2026 Mihajlo Stojanovski */ import { AIMode } from "./constants"; /** * Validation result */ export interface ValidationResult { valid: boolean; value?: T; error?: string; } /** * Validate integer within range * * @param value - Value to validate * @param fieldName - Field name for error messages * @param min - Minimum allowed value (inclusive) * @param max - Maximum allowed value (inclusive) * @returns Validated integer * @throws {ValidationError} If validation fails */ export declare function validateInteger(value: unknown, fieldName: string, min?: number, max?: number): number; /** * Safely parse integer with default value * * @param value - Value to parse * @param defaultValue - Default if invalid * @param min - Minimum allowed value * @param max - Maximum allowed value * @returns Parsed integer or default */ export declare function parseIntSafe(value: string | undefined, defaultValue: number, min?: number, max?: number): number; /** * Validate string is not empty * * @param value - Value to validate * @param fieldName - Field name for error messages * @param maxLength - Maximum length (optional) * @returns Validated string * @throws {ValidationError} If validation fails */ export declare function validateNonEmptyString(value: unknown, fieldName: string, maxLength?: number): string; /** * Validate AI mode * * @param value - Value to validate * @returns Validated AI mode * @throws {ValidationError} If invalid mode */ export declare function validateAIMode(value: string): AIMode; /** * Validate telemetry interval * * @param value - Value to validate * @returns Validated interval in seconds * @throws {ValidationError} If invalid */ export declare function validateTelemetryInterval(value: number): number; /** * Validate OpenAI API key format * * @param value - API key to validate * @returns Validation result */ export declare function validateOpenAIKey(value: string): ValidationResult; /** * Validate Anthropic API key format. * * @param value - API key to validate * @returns Validation result */ export declare function validateClaudeKey(value: string): ValidationResult; /** * Sanitize file path to prevent directory traversal * * @param filePath - Path to sanitize * @returns Sanitized path * @throws {ValidationError} If path contains suspicious patterns */ export declare function sanitizeFilePath(filePath: string): string; /** * Validate percentage value (0-100) * * @param value - Value to validate * @param fieldName - Field name for error messages * @returns Validated percentage * @throws {ValidationError} If invalid */ export declare function validatePercentage(value: number, fieldName: string): number; /** * Validate Node.js version * * @param version - Version string (e.g., "18.12.0") * @param minMajor - Minimum major version * @returns True if version is sufficient */ export declare function validateNodeVersion(version: string, minMajor: number): boolean; /** * Validate object has required keys * * @param obj - Object to validate * @param requiredKeys - Array of required key names * @param objectName - Name for error messages * @throws {ValidationError} If keys are missing */ export declare function validateRequiredKeys(obj: Record, requiredKeys: string[], objectName: string): void; /** * Validate timeout value * * @param value - Timeout in milliseconds * @param fieldName - Field name for error messages * @param min - Minimum timeout (default: 1000ms) * @param max - Maximum timeout (default: 300000ms) * @returns Validated timeout * @throws {ValidationError} If invalid */ export declare function validateTimeout(value: number, fieldName: string, min?: number, max?: number): number; /** * Validate port number * * @param value - Port number * @param fieldName - Field name for error messages * @returns Validated port * @throws {ValidationError} If invalid */ export declare function validatePort(value: number, fieldName: string): number; /** * Validate URL format * * @param value - URL string * @param fieldName - Field name for error messages * @returns Validated URL * @throws {ValidationError} If invalid */ export declare function validateURL(value: string, fieldName: string): URL; /** * Validate email format (basic) * * @param value - Email string * @param fieldName - Field name for error messages * @returns Validated email * @throws {ValidationError} If invalid */ export declare function validateEmail(value: string, fieldName: string): string; //# sourceMappingURL=validation.d.ts.map