use HashedValue;
use crateHashingError;
use VerificationResult;
/// Hashes and verifies secrets.
///
/// Callers use this trait to create stored hashes and verify plaintext values
/// against them. Implementations should return opaque, self-contained hash
/// strings that are safe to persist directly.
///
/// # Implementor notes
///
/// Implementations should use a modern, memory-hard password hashing algorithm,
/// embed salts and parameters when the format supports it, and return errors
/// only for exceptional failures such as misconfiguration or backend issues.
///
/// This trait does not enforce constant-time behavior by itself, but
/// implementations should avoid obviously data-dependent early exits where
/// practical.
///
/// See [`Argon2Hasher`](crate::hashing::argon2::Argon2Hasher) for the default
/// production-ready implementation.