BareGit
#pragma once

#include <string>

#include <mw/error.hpp>

/// Validated email spelling and normalized identity key.
struct EmailAddress
{
    /// Trimmed ASCII address retained for delivery.
    std::string email;

    /// Lowercase identity used for uniqueness and rate limiting.
    std::string key;
};

/// Validate and normalize an MVP ASCII email address.
mw::E<EmailAddress> normalizeEmail(const std::string& input);