use npc_engine_core::{AgentId, Domain};
pub trait GlobalDomain: Domain {
type GlobalState: std::fmt::Debug + Sized + 'static;
fn derive_local_state(global_state: &Self::GlobalState, agent: AgentId) -> Self::State;
fn apply(global_state: &mut Self::GlobalState, local_state: &Self::State, diff: &Self::Diff);
}