barter_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("spread");
25}
26
27impl<Instrument> Identifier<KrakenChannel> for Subscription<Kraken, Instrument, PublicTrades> {
28 fn id(&self) -> KrakenChannel {
29 KrakenChannel::TRADES
30 }
31}
32
33impl<Instrument> Identifier<KrakenChannel> for Subscription<Kraken, Instrument, OrderBooksL1> {
34 fn id(&self) -> KrakenChannel {
35 KrakenChannel::ORDER_BOOK_L1
36 }
37}
38
39impl AsRef<str> for KrakenChannel {
40 fn as_ref(&self) -> &str {
41 self.0
42 }
43}