use crate::HostTypes;
pub trait CarryChain<H: HostTypes> {
fn chain_length(&self) -> u64;
fn generate_mask(&self) -> u64;
fn propagate_mask(&self) -> u64;
fn kill_mask(&self) -> u64;
}
pub trait CarryEvent<H: HostTypes> {
fn event_kind(&self) -> u64;
fn site_position(&self) -> u64;
}
pub trait CarryProfile<H: HostTypes> {
fn carry_count(&self) -> u64;
fn max_propagation_length(&self) -> u64;
type CarryChain: CarryChain<H>;
fn profile_chain(&self) -> &Self::CarryChain;
}
pub trait EncodingConfiguration<H: HostTypes> {
fn symbol_set_size(&self) -> u64;
fn quantization_bits(&self) -> u64;
type TermExpression: crate::kernel::schema::TermExpression<H>;
fn encoding_map(&self) -> &Self::TermExpression;
}
pub trait EncodingQuality<H: HostTypes> {
fn mean_delta(&self) -> H::Decimal;
fn discrimination_ratio(&self) -> H::Decimal;
fn is_optimal_encoding(&self) -> bool;
}
pub trait CarryDepthObservable<H: HostTypes>: crate::bridge::observable::Observable<H> {}