barter_data/transformer/
mod.rs1use crate::{
2 error::DataError,
3 event::MarketEvent,
4 subscription::{Map, SubscriptionKind},
5};
6use async_trait::async_trait;
7use barter_integration::{Transformer, protocol::websocket::WsMessage};
8use tokio::sync::mpsc;
9
10pub mod stateless;
13
14#[async_trait]
17pub trait ExchangeTransformer<Exchange, InstrumentKey, Kind>
18where
19 Self: Transformer<Output = MarketEvent<InstrumentKey, Kind::Event>, Error = DataError> + Sized,
20 Kind: SubscriptionKind,
21{
22 async fn init(
27 instrument_map: Map<InstrumentKey>,
28 initial_snapshots: &[MarketEvent<InstrumentKey, Kind::Event>],
29 ws_sink_tx: mpsc::UnboundedSender<WsMessage>,
30 ) -> Result<Self, DataError>;
31}