#pragma once
#include "../crypto/sha256_hasher.h"
#include <stddef.h>
#include <stdint.h>

// Hash a single file using mmap with fallback to buffered read
// out_hash must be 65 bytes (64 hex + null)
// Returns 0 on success, -1 on error
int hash_file(const char* path, size_t buffer_size, char* out_hash);

// Hash multiple files, returning individual hashes
// out_hashes must be pre-allocated with count * 65 bytes
int hash_files_batch(
    const char* const* paths,
    uint32_t count,
    char** out_hashes,  // Array of 65-char buffers
    size_t buffer_size
);

// Configuration for hash operations
struct HashConfig {
    size_t buffer_size;
    uint32_t num_threads;
};
