1use crate::consensus::basic::data_contract::UnknownTradeModeError;
2use crate::consensus::basic::BasicError;
3use crate::consensus::ConsensusError;
4use crate::ProtocolError;
5use std::fmt;
6use std::fmt::{Display, Formatter};
7#[derive(Debug, PartialEq, Clone, Copy)]
8pub enum TradeMode {
9 None = 0,
10 DirectPurchase = 1,
11 }
14
15impl TradeMode {
16 pub fn seller_sets_price(&self) -> bool {
17 match self {
18 TradeMode::None => false,
19 TradeMode::DirectPurchase => true,
20 }
23 }
24}
25
26impl Display for TradeMode {
27 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
28 match self {
29 TradeMode::None => write!(f, "No Trading"),
30 TradeMode::DirectPurchase => write!(f, "Direct Purchase"),
31 }
34 }
35}
36
37impl TryFrom<u8> for TradeMode {
38 type Error = ProtocolError;
39
40 fn try_from(value: u8) -> Result<Self, Self::Error> {
41 match value {
42 0 => Ok(Self::None),
43 1 => Ok(Self::DirectPurchase),
44 value => Err(ProtocolError::ConsensusError(
47 ConsensusError::BasicError(BasicError::UnknownTradeModeError(
48 UnknownTradeModeError::new(vec![0, 1], value),
49 ))
50 .into(),
51 )),
52 }
53 }
54}