#pragma once #include #include #include "pubkey.h" using std::optional; using std::shared_ptr; using std::vector; namespace erebos { struct SharedState::Priv { vector lookup(UUID) const; vector> tip; }; struct LocalState::Priv { optional identity; SharedState::Priv shared; }; struct SharedData { explicit SharedData(vector> prev, UUID type, vector value): prev(prev), type(type), value(value) {} explicit SharedData(const Ref &); static SharedData load(const Ref & ref) { return SharedData(ref); } Ref store(const Storage &) const; vector> prev; UUID type; vector value; }; }