extern crate alloc;
mod basis;
mod lineage;
mod race;
mod validation;
use core::num::NonZeroUsize;
use crate::kairos::Kairos;
use crate::metis::{
Cut, Declaration, Dot, EpochAddress, EpochRefusal, Epochs, SealedEpoch, Stability,
VersionVector,
};
const ROSTER: [u32; 3] = [1, 2, 3];
#[track_caller]
fn d(station: u32, counter: u64) -> Dot {
Dot::from_parts(station, counter).expect("test literal names the non-dot counter zero")
}
fn cut(entries: &[(u32, u64)]) -> Cut {
let mut vector = VersionVector::new();
for &(station, counter) in entries {
vector.observe(station, counter);
}
Cut::from_witnessed(vector)
}
fn machine() -> Epochs {
Epochs::new(ROSTER, NonZeroUsize::new(2).unwrap())
}
fn tracker() -> Stability {
Stability::new(ROSTER)
}
fn top() -> Cut {
cut(&[(1, 9), (2, 9), (3, 9)])
}