dex-connector 0.0.8

connections to dexes
Documentation
use crate::{
    dex_request::DexError, BalanceResponse, CreateOrderResponse, FilledOrdersResponse, OrderSide,
    TickerResponse,
};
use async_trait::async_trait;

#[async_trait]
pub trait DexConnector: Send + Sync {
    async fn start(&self) -> Result<(), DexError>;

    async fn stop(&self) -> Result<(), DexError>;

    async fn set_leverage(&self, symbol: &str, leverage: &str) -> Result<(), DexError>;

    async fn get_ticker(&self, symbol: &str) -> Result<TickerResponse, DexError>;

    async fn get_filled_orders(&self, symbol: &str) -> Result<FilledOrdersResponse, DexError>;

    async fn get_balance(&self) -> Result<BalanceResponse, DexError>;

    async fn clear_filled_order(&self, symbol: &str, order_id: &str) -> Result<(), DexError>;

    async fn create_order(
        &self,
        symbol: &str,
        size: &str,
        side: OrderSide,
        price: Option<String>,
    ) -> Result<CreateOrderResponse, DexError>;

    async fn cancel_order(&self, symbol: &str, order_id: &str) -> Result<(), DexError>;

    async fn cancel_all_orders(&self, symbol: Option<String>) -> Result<(), DexError>;

    async fn close_all_positions(&self, symbol: Option<String>) -> Result<(), DexError>;

    fn round_price(&self, price: f64, min_tick: f64) -> f64 {
        (price / min_tick).round() * min_tick
    }

    fn round_size(&self, size: f64, min_order: f64) -> f64 {
        (size / min_order).round() * min_order
    }
}