///|
fn main {
let phone = @crdt.ReplicaState::new(1)
phone.add_task("offline-note")
phone.increment(amount=8)
let laptop = @crdt.ReplicaState::new(2)
laptop.add_task("sync-later")
laptop.decrement(amount=3)
let summary = phone.summary()
let remote_summary = laptop.summary()
let merged = phone.merge(laptop)
let delta = phone.log.delta_after(laptop.clock, origin=1)
let plan = summary.plan_with(remote_summary)
println(summary.to_json())
println(delta.to_json())
println(plan.to_json())
println("counter=\{merged.counter.value()}")
println("tasks=\{merged.tasks.size()}")
}