pub mod g_counter;
pub mod lww_register;
pub mod or_set;
pub mod pn_counter;
pub use g_counter::GCounter;
pub use lww_register::LwwRegister;
pub use or_set::OrSet;
pub use pn_counter::PnCounter;
use crate::{DeviceId, SyncResult};
use serde::{Deserialize, Serialize};
pub trait Crdt: Clone + Serialize + for<'de> Deserialize<'de> {
fn merge(&mut self, other: &Self) -> SyncResult<()>;
fn dominated_by(&self, other: &Self) -> bool;
}
pub trait DeviceAware {
fn device_id(&self) -> &DeviceId;
fn set_device_id(&mut self, device_id: DeviceId);
}