use std::fmt::Display;
use borsh::{BorshDeserialize, BorshSerialize};
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, BorshDeserialize, BorshSerialize, Debug, Eq, PartialEq, Hash)]
pub enum Direction {
GreaterThan,
LessThan,
}
impl Direction {
pub fn opposite(&self) -> Direction {
match self {
Direction::GreaterThan => Direction::LessThan,
Direction::LessThan => Direction::GreaterThan,
}
}
}
impl Display for Direction {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Direction::GreaterThan => write!(f, "gt"),
Direction::LessThan => write!(f, "lt"),
}
}
}
#[derive(Clone, Copy, BorshDeserialize, BorshSerialize, Debug, Eq, PartialEq, Hash)]
pub enum StopLossOrderKind {
IOC,
Limit,
}
impl Display for StopLossOrderKind {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
StopLossOrderKind::IOC => write!(f, "ioc"),
StopLossOrderKind::Limit => write!(f, "limit"),
}
}
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "lowercase")]
pub enum Side {
Bid,
Ask,
}