#[derive(Debug, Clone, serde::Serialize)]
pub struct ClobAuth {
pub key: String,
pub secret: String,
pub passphrase: String,
}
#[derive(Debug, Clone, serde::Serialize)]
pub struct GammaAuth {
pub address: String,
}
#[derive(Debug, Clone, serde::Serialize)]
pub struct Subscription {
pub topic: String,
pub r#type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub clob_auth: Option<ClobAuth>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gamma_auth: Option<GammaAuth>,
}
#[derive(Debug, Clone, serde::Serialize)]
pub struct SubscribeRequest {
pub action: String,
pub subscriptions: Vec<Subscription>,
}
impl SubscribeRequest {
pub fn new(subscriptions: Vec<Subscription>) -> Self {
Self {
action: "subscribe".to_string(),
subscriptions,
}
}
}
#[derive(Debug, Clone, serde::Serialize)]
pub struct UnsubscribeRequest {
pub action: String,
pub subscriptions: Vec<Subscription>,
}
impl UnsubscribeRequest {
pub fn new(subscriptions: Vec<Subscription>) -> Self {
Self {
action: "unsubscribe".to_string(),
subscriptions,
}
}
}