use serde::Serialize;
use crate::OrderId;
use crate::Page;
use crate::model::balances::Balance;
use crate::model::configuration::{Currencies, CurrencyPairs};
use crate::model::market_data::{Candle, LastTrades, OrderBook, Tickers, Trade};
use crate::model::orders::{Order, OrderAck, OrderDetails};
use crate::model::trades::Fill;
#[derive(Debug, Serialize)]
#[serde(untagged)]
pub enum CommandOutput {
Balances(Vec<Balance>),
Currencies(Currencies),
Pairs(CurrencyPairs),
Tickers(Tickers),
OrderBook(Box<OrderBook>),
Candles(Vec<Candle>),
LastTrades(LastTrades),
AllTrades(Page<Trade>),
PrivateTrades(Page<Fill>),
Orders(Page<Order>),
Order(Box<OrderDetails>),
Fills(Vec<Fill>),
Ack(Box<OrderAck>),
Cancelled(CancelAck),
AllCancelled(CancelAllAck),
}
#[derive(Debug, Serialize)]
pub struct CancelAck {
pub status: &'static str,
pub order_id: String,
}
impl CancelAck {
pub(crate) fn new(id: &OrderId) -> Self {
Self {
status: "cancelled",
order_id: id.as_str().to_owned(),
}
}
}
#[derive(Debug, Serialize)]
pub struct CancelAllAck {
pub status: &'static str,
}
impl CancelAllAck {
pub(crate) const fn new() -> Self {
Self {
status: "all_cancelled",
}
}
}