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