barter_data/exchange/binance/futures/
mod.rs1use self::liquidation::BinanceLiquidation;
2use super::{Binance, ExchangeServer};
3use crate::{
4 ExchangeWsStream, NoInitialSnapshots,
5 exchange::{
6 StreamSelector,
7 binance::futures::l2::{
8 BinanceFuturesUsdOrderBooksL2SnapshotFetcher, BinanceFuturesUsdOrderBooksL2Transformer,
9 },
10 },
11 instrument::InstrumentData,
12 subscription::{book::OrderBooksL2, liquidation::Liquidations},
13 transformer::stateless::StatelessTransformer,
14};
15use barter_instrument::exchange::ExchangeId;
16use std::fmt::{Display, Formatter};
17
18pub mod l2;
20
21pub mod liquidation;
23
24pub const WEBSOCKET_BASE_URL_BINANCE_FUTURES_USD: &str = "wss://fstream.binance.com/ws";
28
29pub type BinanceFuturesUsd = Binance<BinanceServerFuturesUsd>;
31
32#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default)]
34pub struct BinanceServerFuturesUsd;
35
36impl ExchangeServer for BinanceServerFuturesUsd {
37 const ID: ExchangeId = ExchangeId::BinanceFuturesUsd;
38
39 fn websocket_url() -> &'static str {
40 WEBSOCKET_BASE_URL_BINANCE_FUTURES_USD
41 }
42}
43
44impl<Instrument> StreamSelector<Instrument, OrderBooksL2> for BinanceFuturesUsd
45where
46 Instrument: InstrumentData,
47{
48 type SnapFetcher = BinanceFuturesUsdOrderBooksL2SnapshotFetcher;
49 type Stream = ExchangeWsStream<BinanceFuturesUsdOrderBooksL2Transformer<Instrument::Key>>;
50}
51
52impl<Instrument> StreamSelector<Instrument, Liquidations> for BinanceFuturesUsd
53where
54 Instrument: InstrumentData,
55{
56 type SnapFetcher = NoInitialSnapshots;
57 type Stream = ExchangeWsStream<
58 StatelessTransformer<Self, Instrument::Key, Liquidations, BinanceLiquidation>,
59 >;
60}
61
62impl Display for BinanceFuturesUsd {
63 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
64 write!(f, "BinanceFuturesUsd")
65 }
66}