use serde::{Deserialize, Serialize};
use uuid::Uuid;
pub type OrderId = Uuid;
pub type TradeId = Uuid;
pub type InstrumentId = String;
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct CurrencyPair {
pub base: String,
pub quote: String,
}
impl CurrencyPair {
pub fn new(base: impl Into<String>, quote: impl Into<String>) -> Self {
Self {
base: base.into(),
quote: quote.into(),
}
}
pub fn as_string(&self) -> String {
format!("{}{}", self.base, self.quote)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
pub struct Price(pub u64);
impl Price {
pub fn from_decimal(value: f64, decimals: u8) -> Self {
let multiplier = 10_u64.pow(decimals as u32);
Self((value * multiplier as f64) as u64)
}
pub fn to_decimal(self, decimals: u8) -> f64 {
let divisor = 10_u64.pow(decimals as u32);
self.0 as f64 / divisor as f64
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
pub struct Quantity(pub u64);
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum Side {
Buy,
Sell,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum OrderType {
Market,
Limit,
Stop,
IoC, FoK, }