#pragma once
#include <cstdint>
#include <string>
#include <vector>
namespace obb::geomail {
enum class GeoMailView : uint8_t {
kMailboxSelection = 0,
kHeaderList,
kReading,
kWriting,
};
struct GeoAttachment {
std::string name;
uint32_t size_bytes = 0;
std::string tag;
std::string source_mailbox;
};
struct GeoContact {
std::string pseudo;
std::string obid;
std::vector<std::string> aliases;
std::vector<std::string> capabilities; // MAY, POL...
};
struct GeoMailMessage {
std::string mailbox; // Boîte source : Mairie, Home, Proxy...
std::string human_id; // CVCV-123456
std::string alias; // prenom.nom.diff@region
std::string pseudo; // affiché dans l'UI
std::string subject; // bref
std::string subject_long; // champ signé blockchain
std::string body_preview; // extrait
std::string body_full; // texte complet (si disponible)
std::vector<GeoAttachment> attachments;
uint32_t attachment_hash = 0;
uint32_t timestamp = 0;
uint8_t priority = 0;
uint8_t hop_count = 0;
bool requires_ack = false;
};
} // namespace obb::geomail