/// Controls the level of state tracking for a cohort. /// /// - `None`: No state tracking. Values are computed from stateful sub-cohorts. /// - `PriceOnly`: Only tracks `price_to_amount` for percentile calculations. /// Used by aggregate cohorts (all, sth, lth) that compute other values from sub-cohorts. /// - `Full`: Full state tracking including supply, realized values, and `price_to_amount`. /// Used by stateful cohorts like individual age ranges and epochs. #[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] pub enum StateLevel { #[default] None, PriceOnly, Full, } impl StateLevel { pub fn is_none(&self) -> bool { matches!(self, StateLevel::None) } pub fn is_price_only(&self) -> bool { matches!(self, StateLevel::PriceOnly) } pub fn is_full(&self) -> bool { matches!(self, StateLevel::Full) } pub fn has_price_to_amount(&self) -> bool { matches!(self, StateLevel::PriceOnly | StateLevel::Full) } }