pyth_lazer_protocol/
subscription.rsuse {
crate::router::{JsonUpdate, SubscriptionParams},
derive_more::From,
serde::{Deserialize, Serialize},
};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
#[serde(rename_all = "camelCase")]
pub enum Request {
Subscribe(SubscribeRequest),
Unsubscribe(UnsubscribeRequest),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct SubscriptionId(pub u64);
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SubscribeRequest {
pub subscription_id: SubscriptionId,
#[serde(flatten)]
pub params: SubscriptionParams,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UnsubscribeRequest {
pub subscription_id: SubscriptionId,
}
#[derive(Debug, Clone, Serialize, Deserialize, From)]
#[serde(tag = "type")]
#[serde(rename_all = "camelCase")]
pub enum Response {
Error(ErrorResponse),
Subscribed(SubscribedResponse),
Unsubscribed(UnsubscribedResponse),
SubscriptionError(SubscriptionErrorResponse),
StreamUpdated(StreamUpdatedResponse),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SubscribedResponse {
pub subscription_id: SubscriptionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UnsubscribedResponse {
pub subscription_id: SubscriptionId,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SubscriptionErrorResponse {
pub subscription_id: SubscriptionId,
pub error: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ErrorResponse {
pub error: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StreamUpdatedResponse {
pub subscription_id: SubscriptionId,
#[serde(flatten)]
pub payload: JsonUpdate,
}