rustrade_data/exchange/kraken/
channel.rs1use super::Kraken;
2use crate::{
3 Identifier,
4 subscription::{Subscription, book::OrderBooksL1, trade::PublicTrades},
5};
6use serde::Serialize;
7
8#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Serialize)]
13pub struct KrakenChannel(pub &'static str);
14
15impl KrakenChannel {
16 pub const TRADES: Self = Self("trade");
20
21 pub const ORDER_BOOK_L1: Self = Self("ticker");
28}
29
30impl<Instrument> Identifier<KrakenChannel> for Subscription<Kraken, Instrument, PublicTrades> {
31 fn id(&self) -> KrakenChannel {
32 KrakenChannel::TRADES
33 }
34}
35
36impl<Instrument> Identifier<KrakenChannel> for Subscription<Kraken, Instrument, OrderBooksL1> {
37 fn id(&self) -> KrakenChannel {
38 KrakenChannel::ORDER_BOOK_L1
39 }
40}
41
42impl AsRef<str> for KrakenChannel {
43 fn as_ref(&self) -> &str {
44 self.0
45 }
46}