dpp/nft/
mod.rs

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    // PublicOffer = 2,
12    // PrivateOffer = 3,
13}
14
15impl TradeMode {
16    pub fn seller_sets_price(&self) -> bool {
17        match self {
18            TradeMode::None => false,
19            TradeMode::DirectPurchase => true,
20            // TradeMode::PublicOffer => true,  //min price
21            // TradeMode::PrivateOffer => true, //min price
22        }
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            // TradeMode::PublicOffer => write!(f, "Public Offer"),
32            // TradeMode::PrivateOffer => write!(f, "Private Offer"),
33        }
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            // 2 => Ok(Self::PublicOffer),
45            // 3 => Ok(Self::PrivateOffer),
46            value => Err(ProtocolError::ConsensusError(
47                ConsensusError::BasicError(BasicError::UnknownTradeModeError(
48                    UnknownTradeModeError::new(vec![0, 1], value),
49                ))
50                .into(),
51            )),
52        }
53    }
54}