use std::io;
use std::str::FromStr;
use strict_encoding::{StrictDecode, StrictEncode};
use crate::consensus::{self, Decodable, Encodable};
use crate::trade::DealId;
use crate::Uuid;
pub mod btcxmr;
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
PartialOrd,
Ord,
Hash,
Display,
Serialize,
Deserialize,
StrictEncode,
StrictDecode,
)]
#[serde(transparent)]
#[display(inner)]
pub struct SwapId(pub Uuid);
impl From<Uuid> for SwapId {
fn from(u: Uuid) -> Self {
SwapId(u)
}
}
impl From<uuid::Uuid> for SwapId {
fn from(u: uuid::Uuid) -> Self {
SwapId(u.into())
}
}
impl From<DealId> for SwapId {
fn from(t: DealId) -> Self {
SwapId(t.0)
}
}
impl FromStr for SwapId {
type Err = uuid::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(Self(Uuid::from_str(s)?))
}
}
impl Encodable for SwapId {
fn consensus_encode<W: io::Write>(&self, s: &mut W) -> Result<usize, io::Error> {
self.0.consensus_encode(s)
}
}
impl Decodable for SwapId {
fn consensus_decode<D: io::Read>(d: &mut D) -> Result<Self, consensus::Error> {
Ok(Self(Decodable::consensus_decode(d)?))
}
}