pub mod binary;
pub mod tree;
pub mod unary;
use avalanche_types::ids::{bag::Bag, Id};
#[derive(Clone, Debug)]
pub enum Node {
Unary(unary::node::Node),
Binary(binary::node::Node),
}
impl Node {
pub fn preference(&self) -> Id {
match self {
Node::Unary(n) => n.preference(),
Node::Binary(n) => n.preference(),
}
}
pub fn decided_prefix(&self) -> i64 {
match self {
Node::Unary(n) => n.decided_prefix(),
Node::Binary(n) => n.decided_prefix(),
}
}
pub fn finalized(&self) -> bool {
match self {
Node::Unary(n) => n.finalized(),
Node::Binary(n) => n.finalized(),
}
}
pub fn add(&mut self, new_choice: &Id) -> Node {
match self {
Node::Unary(n) => n.add(new_choice),
Node::Binary(n) => n.add(new_choice),
}
}
pub fn record_poll(&mut self, votes: Bag, reset: bool) -> (Node, bool) {
match self {
Node::Unary(n) => n.record_poll(votes, reset),
Node::Binary(n) => n.record_poll(votes, reset),
}
}
}