/**
 * Human-readable file size (binary units).
 * @param bytes
 */
export declare function formatFileSize(bytes: number): string;
/**
 * Whether a file satisfies an HTML-like `accept` string (extensions and/or MIME, comma-separated).
 * @param file
 * @param accept
 */
export declare function fileMatchesAccept(file: File, accept: string): boolean;
/**
 * Constraints applied when validating an uploaded file.
 */
export interface FileValidationOptions {
    /** HTML-like `accept` string (extensions and/or MIME types, comma-separated). */
    accept?: string;
    /** Maximum allowed file size in bytes. */
    maxBytes?: number;
}
/**
 * A file that failed validation together with a human-readable reason.
 */
export interface FileValidationError {
    /** The file that failed validation. */
    file: File;
    /** Human-readable reason why the file failed. */
    message: string;
}
/**
 * Outcome of validating a batch of files against {@link FileValidationOptions}.
 */
export interface FileValidationResult {
    /** Files that passed validation. */
    valid: File[];
    /** Files that failed validation together with a reason. */
    errors: FileValidationError[];
}
/**
 * Validates a single file against the provided constraints.
 * @param file
 * @param options
 */
export declare function validateFile(file: File, options: FileValidationOptions): string | null;
/**
 * Validates a batch of files, partitioning them into `valid` and `errors`.
 * @param files
 * @param options
 */
export declare function validateFiles(files: File[], options: FileValidationOptions): FileValidationResult;
