#pragma once #include #include "pubkey.h" using std::function; using std::optional; using std::string; using std::vector; namespace erebos { class IdentityData { public: static optional load(const Ref &); Ref store(const Storage & st) const; const vector>> prev; const optional name; const optional>> owner; const Stored keyIdentity; const optional> keyMessage; }; class Identity::Priv { public: vector>> data; shared_future> name; optional owner; static bool verifySignatures(const Stored> & sdata); static shared_ptr validate(const vector>> & sdata); optional> lookupProperty( function sel) const; }; class Identity::Builder::Priv { public: Storage storage; vector>> prev = {}; optional name = nullopt; optional owner = nullopt; Stored keyIdentity; optional> keyMessage; }; }