use super::types::BookMarketState;
use crate::book::protocol::reject::RejectReason;
use crate::types::MarketKind;
#[allow(dead_code)]
pub fn validate_transition(
from: BookMarketState,
to: BookMarketState,
market_kind: MarketKind,
) -> Result<(), RejectReason> {
if market_kind == MarketKind::PreEventOnly && to == BookMarketState::TurnInPlayEnabled {
return Err(RejectReason::MarketInPlayNotSupported);
}
if from.is_terminal() && !matches!(to, BookMarketState::Settled | BookMarketState::Voided) {
return Err(RejectReason::MarketTerminal);
}
Ok(())
}
#[allow(dead_code)]
pub fn can_trade(state: BookMarketState) -> Result<(), RejectReason> {
if !state.is_matchable() {
return Err(RejectReason::MarketNotOpen);
}
Ok(())
}