use alloc::{string::String, vec::Vec};
use sp_core::Bytes;
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "event", rename_all = "camelCase"))]
pub enum SubscribeEvent {
ReplayStatements {
#[cfg_attr(feature = "serde", serde(rename = "filterId"))]
filter_id: String,
statements: Vec<Bytes>,
},
ReplayDone {
#[cfg_attr(feature = "serde", serde(rename = "filterId"))]
filter_id: String,
},
NewStatements {
statements: Vec<NewStatementEntry>,
},
Stop,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct NewStatementEntry {
pub statement: Bytes,
#[cfg_attr(feature = "serde", serde(rename = "filterIds"))]
pub filter_ids: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(untagged))]
pub enum AddFilterResponse {
Ok(String),
LimitReached(LimitReachedResult),
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct LimitReachedResult {
pub result: LimitReachedTag,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
pub enum LimitReachedTag {
LimitReached,
}
impl AddFilterResponse {
pub fn limit_reached() -> Self {
AddFilterResponse::LimitReached(LimitReachedResult {
result: LimitReachedTag::LimitReached,
})
}
}