/**
 * File Validator
 *
 * Validates uploaded files for security and compliance
 * Extracted from Holy Habit upload system with enhanced security
 */
import { ValidationResult, ValidationOptions, ValidationError } from '../types/Upload';
export declare class FileValidator {
    private static readonly MAGIC_NUMBERS;
    private static readonly MALICIOUS_PATTERNS;
    /**
     * Validate uploaded file
     *
     * @param file - Multer file object
     * @param options - Validation options
     * @returns Validation result
     */
    static validate(file: Express.Multer.File, options?: ValidationOptions): Promise<ValidationResult>;
    /**
     * Detect MIME type using multiple methods
     *
     * @param file - Multer file object
     * @returns Detected MIME type
     */
    private static detectMimeType;
    /**
     * Detect MIME type from magic number
     *
     * @param file - Multer file object
     * @returns Detected MIME type
     */
    private static detectFromMagicNumber;
    /**
     * Validate magic number against MIME type
     *
     * @param file - Multer file object
     * @param expectedMimeType - Expected MIME type
     * @returns True if magic number matches
     */
    private static validateMagicNumber;
    /**
     * Check for malicious content
     *
     * @param file - Multer file object
     * @returns Malicious check result
     */
    private static checkMaliciousContent;
    /**
     * Validate filename
     *
     * @param filename - Original filename
     * @returns Validation result
     */
    private static validateFilename;
    /**
     * Get file extension
     *
     * @param filename - Filename
     * @returns File extension (without dot)
     */
    private static getFileExtension;
    /**
     * Check if MIME type is an image
     *
     * @param mimeType - MIME type
     * @returns True if image type
     */
    private static isImageType;
    /**
     * Format bytes to human readable format
     *
     * @param bytes - Bytes
     * @returns Formatted string
     */
    private static formatBytes;
    /**
     * Create validation error
     *
     * @param result - Validation result
     * @returns Validation error
     */
    static createError(result: ValidationResult): ValidationError;
    /**
     * Quick validation for common cases
     *
     * @param file - Multer file object
     * @param maxSize - Maximum file size
     * @param allowedTypes - Allowed MIME types
     * @returns True if valid
     */
    static quickValidate(file: Express.Multer.File, maxSize?: number, allowedTypes?: string[]): Promise<boolean>;
}
//# sourceMappingURL=FileValidator.d.ts.map