From 1d75481e91a6d2d6d883419b2fef60b97f6c1f25 Mon Sep 17 00:00:00 2001 From: Christopher Yovanovitch Date: Fri, 20 Mar 2026 23:18:35 +0100 Subject: [PATCH] fix: stop filtering NewMarket/MarketResolved WS events by subscribed assets and fix MAKER_REBATE deserialization NewMarket and MarketResolved are broadcast events with new/different asset IDs that will never match the subscriber's asset_ids_set, causing them to be silently dropped. These events should always be yielded to consumers. MakerRebate was deserializing to Unknown("MAKER_REBATE") because rename_all = "UPPERCASE" produces "MAKERREBATE" not "MAKER_REBATE". Added explicit serde/strum rename attributes. --- src/clob/ws/subscription.rs | 7 +------ src/data/types/mod.rs | 2 ++ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/clob/ws/subscription.rs b/src/clob/ws/subscription.rs index 0a30488a..f8a50cb0 100644 --- a/src/clob/ws/subscription.rs +++ b/src/clob/ws/subscription.rs @@ -300,12 +300,7 @@ impl SubscriptionManager { WsMessage::LastTradePrice(ltp) => asset_ids_set.contains(<p.asset_id), WsMessage::TickSizeChange(tsc) => asset_ids_set.contains(&tsc.asset_id), WsMessage::BestBidAsk(bba) => asset_ids_set.contains(&bba.asset_id), - WsMessage::NewMarket(nm) => { - nm.asset_ids.iter().any(|id| asset_ids_set.contains(id)) - }, - WsMessage::MarketResolved(mr) => { - mr.asset_ids.iter().any(|id| asset_ids_set.contains(id)) - }, + WsMessage::NewMarket(_) | WsMessage::MarketResolved(_) => true, _ => false, }; diff --git a/src/data/types/mod.rs b/src/data/types/mod.rs index 02e01876..6c198524 100644 --- a/src/data/types/mod.rs +++ b/src/data/types/mod.rs @@ -49,6 +49,8 @@ pub enum ActivityType { /// Yield Yield, /// Maker rebate (fee rebate for providing liquidity). + #[serde(rename = "MAKER_REBATE")] + #[strum(serialize = "MAKER_REBATE")] MakerRebate, /// Unknown activity type from the API (captures the raw value for debugging). #[serde(untagged)]