lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

commit 0f5269e6d0c7e9b70569b176dc9a8e8beadd3c60
parent 866e01b3ff3c3c05235d4899e72a3e542020b295
Author: triesap <tyson@radroots.org>
Date:   Thu, 30 Apr 2026 04:54:37 +0000

trade: align active pricing event kinds

Diffstat:
Mcrates/events/src/kinds.rs | 55+++++++++++++++++++++++++++++--------------------------
Mcrates/events/src/trade.rs | 61++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Mcrates/events_codec/src/trade/decode.rs | 43++++++++++++++++++++++++++++++++++++++++++-
Mcrates/sdk/src/adapters/radrootsd.rs | 41++++++-----------------------------------
Mcrates/sdk/src/client.rs | 12------------
5 files changed, 133 insertions(+), 79 deletions(-)

diff --git a/crates/events/src/kinds.rs b/crates/events/src/kinds.rs @@ -63,7 +63,8 @@ pub const KIND_TRADE_ANSWER: u32 = 3427; pub const KIND_TRADE_DISCOUNT_REQUEST: u32 = 3428; pub const KIND_TRADE_DISCOUNT_OFFER: u32 = 3429; pub const KIND_TRADE_DISCOUNT_ACCEPT: u32 = 3430; -pub const KIND_TRADE_DISCOUNT_DECLINE: u32 = 3431; +pub const KIND_TRADE_FORBIDDEN_3431: u32 = 3431; +pub const KIND_TRADE_DISCOUNT_DECLINE: u32 = KIND_TRADE_FORBIDDEN_3431; pub const KIND_TRADE_CANCEL: u32 = 3432; pub const KIND_TRADE_FULFILLMENT_UPDATE: u32 = 3433; pub const KIND_TRADE_RECEIPT: u32 = 3434; @@ -77,7 +78,7 @@ pub const KIND_TRADE_LISTING_ANSWER_RES: u32 = KIND_TRADE_ANSWER; pub const KIND_TRADE_LISTING_DISCOUNT_REQ: u32 = KIND_TRADE_DISCOUNT_REQUEST; pub const KIND_TRADE_LISTING_DISCOUNT_OFFER_RES: u32 = KIND_TRADE_DISCOUNT_OFFER; pub const KIND_TRADE_LISTING_DISCOUNT_ACCEPT_REQ: u32 = KIND_TRADE_DISCOUNT_ACCEPT; -pub const KIND_TRADE_LISTING_DISCOUNT_DECLINE_REQ: u32 = KIND_TRADE_DISCOUNT_DECLINE; +pub const KIND_TRADE_LISTING_DISCOUNT_DECLINE_REQ: u32 = KIND_TRADE_FORBIDDEN_3431; pub const KIND_TRADE_LISTING_CANCEL_REQ: u32 = KIND_TRADE_CANCEL; pub const KIND_TRADE_LISTING_FULFILLMENT_UPDATE_REQ: u32 = KIND_TRADE_FULFILLMENT_UPDATE; pub const KIND_TRADE_LISTING_RECEIPT_REQ: u32 = KIND_TRADE_RECEIPT; @@ -87,7 +88,7 @@ pub const TRADE_SERVICE_KINDS: [u32; 2] = [ KIND_TRADE_LISTING_VALIDATE_RES, ]; -pub const TRADE_PUBLIC_KINDS: [u32; 13] = [ +pub const TRADE_PUBLIC_KINDS: [u32; 12] = [ KIND_TRADE_ORDER_REQUEST, KIND_TRADE_ORDER_RESPONSE, KIND_TRADE_ORDER_REVISION, @@ -97,13 +98,12 @@ pub const TRADE_PUBLIC_KINDS: [u32; 13] = [ KIND_TRADE_DISCOUNT_REQUEST, KIND_TRADE_DISCOUNT_OFFER, KIND_TRADE_DISCOUNT_ACCEPT, - KIND_TRADE_DISCOUNT_DECLINE, KIND_TRADE_CANCEL, KIND_TRADE_FULFILLMENT_UPDATE, KIND_TRADE_RECEIPT, ]; -pub const TRADE_KINDS: [u32; 15] = [ +pub const TRADE_KINDS: [u32; 14] = [ KIND_TRADE_LISTING_VALIDATE_REQ, KIND_TRADE_LISTING_VALIDATE_RES, KIND_TRADE_ORDER_REQUEST, @@ -115,29 +115,32 @@ pub const TRADE_KINDS: [u32; 15] = [ KIND_TRADE_DISCOUNT_REQUEST, KIND_TRADE_DISCOUNT_OFFER, KIND_TRADE_DISCOUNT_ACCEPT, - KIND_TRADE_DISCOUNT_DECLINE, KIND_TRADE_CANCEL, KIND_TRADE_FULFILLMENT_UPDATE, KIND_TRADE_RECEIPT, ]; -pub const TRADE_LISTING_KINDS: [u32; 15] = TRADE_KINDS; +pub const TRADE_LISTING_KINDS: [u32; 14] = TRADE_KINDS; pub const ACTIVE_TRADE_LISTING_KINDS: [u32; 2] = [KIND_LISTING, KIND_LISTING_DRAFT]; -pub const ACTIVE_TRADE_PUBLIC_KINDS: [u32; 5] = [ +pub const ACTIVE_TRADE_PUBLIC_KINDS: [u32; 7] = [ KIND_TRADE_ORDER_REQUEST, KIND_TRADE_ORDER_DECISION, + KIND_TRADE_ORDER_REVISION, + KIND_TRADE_ORDER_REVISION_RESPONSE, KIND_TRADE_CANCEL, KIND_TRADE_FULFILLMENT_UPDATE, KIND_TRADE_RECEIPT, ]; -pub const ACTIVE_TRADE_KINDS: [u32; 7] = [ +pub const ACTIVE_TRADE_KINDS: [u32; 9] = [ KIND_LISTING, KIND_LISTING_DRAFT, KIND_TRADE_ORDER_REQUEST, KIND_TRADE_ORDER_DECISION, + KIND_TRADE_ORDER_REVISION, + KIND_TRADE_ORDER_REVISION_RESPONSE, KIND_TRADE_CANCEL, KIND_TRADE_FULFILLMENT_UPDATE, KIND_TRADE_RECEIPT, @@ -182,7 +185,6 @@ pub const fn is_trade_public_kind(kind: u32) -> bool { | KIND_TRADE_DISCOUNT_REQUEST | KIND_TRADE_DISCOUNT_OFFER | KIND_TRADE_DISCOUNT_ACCEPT - | KIND_TRADE_DISCOUNT_DECLINE | KIND_TRADE_CANCEL | KIND_TRADE_FULFILLMENT_UPDATE | KIND_TRADE_RECEIPT @@ -205,6 +207,8 @@ pub const fn is_active_trade_public_kind(kind: u32) -> bool { kind, KIND_TRADE_ORDER_REQUEST | KIND_TRADE_ORDER_DECISION + | KIND_TRADE_ORDER_REVISION + | KIND_TRADE_ORDER_REVISION_RESPONSE | KIND_TRADE_CANCEL | KIND_TRADE_FULFILLMENT_UPDATE | KIND_TRADE_RECEIPT @@ -226,7 +230,6 @@ pub const fn is_trade_listing_request_kind(kind: u32) -> bool { | KIND_TRADE_QUESTION | KIND_TRADE_DISCOUNT_REQUEST | KIND_TRADE_DISCOUNT_ACCEPT - | KIND_TRADE_DISCOUNT_DECLINE | KIND_TRADE_CANCEL | KIND_TRADE_FULFILLMENT_UPDATE | KIND_TRADE_RECEIPT @@ -470,7 +473,7 @@ mod kinds_constants_tests { ("KIND_TRADE_DISCOUNT_REQUEST", KIND_TRADE_DISCOUNT_REQUEST), ("KIND_TRADE_DISCOUNT_OFFER", KIND_TRADE_DISCOUNT_OFFER), ("KIND_TRADE_DISCOUNT_ACCEPT", KIND_TRADE_DISCOUNT_ACCEPT), - ("KIND_TRADE_DISCOUNT_DECLINE", KIND_TRADE_DISCOUNT_DECLINE), + ("KIND_TRADE_FORBIDDEN_3431", KIND_TRADE_FORBIDDEN_3431), ("KIND_TRADE_CANCEL", KIND_TRADE_CANCEL), ( "KIND_TRADE_FULFILLMENT_UPDATE", @@ -508,10 +511,6 @@ mod kinds_constants_tests { KIND_TRADE_LISTING_DISCOUNT_ACCEPT_REQ, ), ( - "KIND_TRADE_LISTING_DISCOUNT_DECLINE_REQ", - KIND_TRADE_LISTING_DISCOUNT_DECLINE_REQ, - ), - ( "KIND_TRADE_LISTING_CANCEL_REQ", KIND_TRADE_LISTING_CANCEL_REQ, ), @@ -647,9 +646,6 @@ mod kinds_constants_tests { assert!(is_trade_listing_request_kind( KIND_TRADE_LISTING_DISCOUNT_ACCEPT_REQ )); - assert!(is_trade_listing_request_kind( - KIND_TRADE_LISTING_DISCOUNT_DECLINE_REQ - )); assert!(is_trade_listing_request_kind(KIND_TRADE_LISTING_CANCEL_REQ)); assert!(is_trade_listing_request_kind( KIND_TRADE_LISTING_FULFILLMENT_UPDATE_REQ @@ -669,6 +665,9 @@ mod kinds_constants_tests { assert!(!is_trade_listing_result_kind(KIND_TRADE_LISTING_CANCEL_REQ)); assert!(is_trade_listing_kind(KIND_TRADE_LISTING_RECEIPT_REQ)); assert!(!is_trade_listing_kind(KIND_LISTING)); + assert!(!is_trade_public_kind(KIND_TRADE_FORBIDDEN_3431)); + assert!(!is_trade_kind(KIND_TRADE_FORBIDDEN_3431)); + assert!(!is_trade_listing_request_kind(KIND_TRADE_FORBIDDEN_3431)); assert_eq!( trade_service_result_kind_for_request(KIND_TRADE_LISTING_VALIDATE_REQ), Some(KIND_TRADE_LISTING_VALIDATE_RES) @@ -736,8 +735,8 @@ mod kinds_constants_tests { } #[test] - fn active_trade_kind_set_contains_listing_order_decision_fulfillment_cancellation_and_receipt() - { + fn active_trade_kind_set_contains_listing_order_revision_decision_fulfillment_cancellation_and_receipt() + { assert_eq!( ACTIVE_TRADE_LISTING_KINDS, [KIND_LISTING, KIND_LISTING_DRAFT] @@ -747,6 +746,8 @@ mod kinds_constants_tests { [ KIND_TRADE_ORDER_REQUEST, KIND_TRADE_ORDER_DECISION, + KIND_TRADE_ORDER_REVISION, + KIND_TRADE_ORDER_REVISION_RESPONSE, KIND_TRADE_CANCEL, KIND_TRADE_FULFILLMENT_UPDATE, KIND_TRADE_RECEIPT, @@ -759,6 +760,8 @@ mod kinds_constants_tests { KIND_LISTING_DRAFT, KIND_TRADE_ORDER_REQUEST, KIND_TRADE_ORDER_DECISION, + KIND_TRADE_ORDER_REVISION, + KIND_TRADE_ORDER_REVISION_RESPONSE, KIND_TRADE_CANCEL, KIND_TRADE_FULFILLMENT_UPDATE, KIND_TRADE_RECEIPT, @@ -769,21 +772,21 @@ mod kinds_constants_tests { assert!(is_active_trade_kind(KIND_LISTING_DRAFT)); assert!(is_active_trade_public_kind(KIND_TRADE_ORDER_REQUEST)); assert!(is_active_trade_public_kind(KIND_TRADE_ORDER_DECISION)); + assert!(is_active_trade_public_kind(KIND_TRADE_ORDER_REVISION)); + assert!(is_active_trade_public_kind( + KIND_TRADE_ORDER_REVISION_RESPONSE + )); assert!(is_active_trade_public_kind(KIND_TRADE_CANCEL)); assert!(is_active_trade_public_kind(KIND_TRADE_FULFILLMENT_UPDATE)); assert!(is_active_trade_public_kind(KIND_TRADE_RECEIPT)); assert!(!is_active_trade_public_kind( KIND_TRADE_LISTING_VALIDATE_REQ )); - assert!(!is_active_trade_public_kind(KIND_TRADE_ORDER_REVISION)); - assert!(!is_active_trade_public_kind( - KIND_TRADE_ORDER_REVISION_RESPONSE - )); assert!(!is_active_trade_public_kind(KIND_TRADE_QUESTION)); assert!(!is_active_trade_public_kind(KIND_TRADE_ANSWER)); assert!(!is_active_trade_public_kind(KIND_TRADE_DISCOUNT_REQUEST)); assert!(!is_active_trade_public_kind(KIND_TRADE_DISCOUNT_OFFER)); assert!(!is_active_trade_public_kind(KIND_TRADE_DISCOUNT_ACCEPT)); - assert!(!is_active_trade_public_kind(3431)); + assert!(!is_active_trade_public_kind(KIND_TRADE_FORBIDDEN_3431)); } } diff --git a/crates/events/src/trade.rs b/crates/events/src/trade.rs @@ -533,6 +533,10 @@ pub enum RadrootsActiveTradeMessageType { TradeOrderRequested, #[cfg_attr(feature = "serde", serde(rename = "TradeOrderDecision"))] TradeOrderDecision, + #[cfg_attr(feature = "serde", serde(rename = "TradeOrderRevisionProposed"))] + TradeOrderRevisionProposed, + #[cfg_attr(feature = "serde", serde(rename = "TradeOrderRevisionDecision"))] + TradeOrderRevisionDecision, #[cfg_attr(feature = "serde", serde(rename = "TradeOrderCancelled"))] TradeOrderCancelled, #[cfg_attr(feature = "serde", serde(rename = "TradeFulfillmentUpdated"))] @@ -547,6 +551,8 @@ impl RadrootsActiveTradeMessageType { match kind { KIND_TRADE_ORDER_REQUEST => Some(Self::TradeOrderRequested), KIND_TRADE_ORDER_DECISION => Some(Self::TradeOrderDecision), + KIND_TRADE_ORDER_REVISION => Some(Self::TradeOrderRevisionProposed), + KIND_TRADE_ORDER_REVISION_RESPONSE => Some(Self::TradeOrderRevisionDecision), KIND_TRADE_CANCEL => Some(Self::TradeOrderCancelled), KIND_TRADE_FULFILLMENT_UPDATE => Some(Self::TradeFulfillmentUpdated), KIND_TRADE_RECEIPT => Some(Self::TradeBuyerReceipt), @@ -559,6 +565,8 @@ impl RadrootsActiveTradeMessageType { match self { Self::TradeOrderRequested => KIND_TRADE_ORDER_REQUEST, Self::TradeOrderDecision => KIND_TRADE_ORDER_DECISION, + Self::TradeOrderRevisionProposed => KIND_TRADE_ORDER_REVISION, + Self::TradeOrderRevisionDecision => KIND_TRADE_ORDER_REVISION_RESPONSE, Self::TradeOrderCancelled => KIND_TRADE_CANCEL, Self::TradeFulfillmentUpdated => KIND_TRADE_FULFILLMENT_UPDATE, Self::TradeBuyerReceipt => KIND_TRADE_RECEIPT, @@ -570,6 +578,8 @@ impl RadrootsActiveTradeMessageType { match self { Self::TradeOrderRequested => "TradeOrderRequested", Self::TradeOrderDecision => "TradeOrderDecision", + Self::TradeOrderRevisionProposed => "TradeOrderRevisionProposed", + Self::TradeOrderRevisionDecision => "TradeOrderRevisionDecision", Self::TradeOrderCancelled => "TradeOrderCancelled", Self::TradeFulfillmentUpdated => "TradeFulfillmentUpdated", Self::TradeBuyerReceipt => "TradeBuyerReceipt", @@ -586,6 +596,8 @@ impl RadrootsActiveTradeMessageType { matches!( self, Self::TradeOrderDecision + | Self::TradeOrderRevisionProposed + | Self::TradeOrderRevisionDecision | Self::TradeOrderCancelled | Self::TradeFulfillmentUpdated | Self::TradeBuyerReceipt @@ -632,7 +644,6 @@ impl RadrootsTradeMessageType { KIND_TRADE_DISCOUNT_REQUEST => Some(Self::DiscountRequest), KIND_TRADE_DISCOUNT_OFFER => Some(Self::DiscountOffer), KIND_TRADE_DISCOUNT_ACCEPT => Some(Self::DiscountAccept), - KIND_TRADE_DISCOUNT_DECLINE => Some(Self::DiscountDecline), KIND_TRADE_CANCEL => Some(Self::Cancel), KIND_TRADE_FULFILLMENT_UPDATE => Some(Self::FulfillmentUpdate), KIND_TRADE_RECEIPT => Some(Self::Receipt), @@ -655,7 +666,7 @@ impl RadrootsTradeMessageType { Self::DiscountRequest => KIND_TRADE_DISCOUNT_REQUEST, Self::DiscountOffer => KIND_TRADE_DISCOUNT_OFFER, Self::DiscountAccept => KIND_TRADE_DISCOUNT_ACCEPT, - Self::DiscountDecline => KIND_TRADE_DISCOUNT_DECLINE, + Self::DiscountDecline => KIND_TRADE_FORBIDDEN_3431, Self::Cancel => KIND_TRADE_CANCEL, Self::FulfillmentUpdate => KIND_TRADE_FULFILLMENT_UPDATE, Self::Receipt => KIND_TRADE_RECEIPT, @@ -1208,6 +1219,14 @@ mod tests { Some(RadrootsActiveTradeMessageType::TradeOrderDecision) ); assert_eq!( + RadrootsActiveTradeMessageType::from_kind(KIND_TRADE_ORDER_REVISION), + Some(RadrootsActiveTradeMessageType::TradeOrderRevisionProposed) + ); + assert_eq!( + RadrootsActiveTradeMessageType::from_kind(KIND_TRADE_ORDER_REVISION_RESPONSE), + Some(RadrootsActiveTradeMessageType::TradeOrderRevisionDecision) + ); + assert_eq!( RadrootsActiveTradeMessageType::from_kind(KIND_TRADE_FULFILLMENT_UPDATE), Some(RadrootsActiveTradeMessageType::TradeFulfillmentUpdated) ); @@ -1229,6 +1248,14 @@ mod tests { KIND_TRADE_ORDER_DECISION ); assert_eq!( + RadrootsActiveTradeMessageType::TradeOrderRevisionProposed.kind(), + KIND_TRADE_ORDER_REVISION + ); + assert_eq!( + RadrootsActiveTradeMessageType::TradeOrderRevisionDecision.kind(), + KIND_TRADE_ORDER_REVISION_RESPONSE + ); + assert_eq!( RadrootsActiveTradeMessageType::TradeFulfillmentUpdated.kind(), KIND_TRADE_FULFILLMENT_UPDATE ); @@ -1249,6 +1276,14 @@ mod tests { "TradeOrderDecision" ); assert_eq!( + RadrootsActiveTradeMessageType::TradeOrderRevisionProposed.name(), + "TradeOrderRevisionProposed" + ); + assert_eq!( + RadrootsActiveTradeMessageType::TradeOrderRevisionDecision.name(), + "TradeOrderRevisionDecision" + ); + assert_eq!( RadrootsActiveTradeMessageType::TradeFulfillmentUpdated.name(), "TradeFulfillmentUpdated" ); @@ -1262,6 +1297,8 @@ mod tests { ); assert!(RadrootsActiveTradeMessageType::TradeOrderRequested.requires_listing_snapshot()); assert!(RadrootsActiveTradeMessageType::TradeOrderDecision.requires_trade_chain()); + assert!(RadrootsActiveTradeMessageType::TradeOrderRevisionProposed.requires_trade_chain()); + assert!(RadrootsActiveTradeMessageType::TradeOrderRevisionDecision.requires_trade_chain()); assert!(RadrootsActiveTradeMessageType::TradeFulfillmentUpdated.requires_trade_chain()); assert!(RadrootsActiveTradeMessageType::TradeOrderCancelled.requires_trade_chain()); assert!(RadrootsActiveTradeMessageType::TradeBuyerReceipt.requires_trade_chain()); @@ -1270,6 +1307,12 @@ mod tests { serde_json::to_value(RadrootsActiveTradeMessageType::TradeOrderRequested).unwrap(); let decision_name = serde_json::to_value(RadrootsActiveTradeMessageType::TradeOrderDecision).unwrap(); + let revision_proposed_name = + serde_json::to_value(RadrootsActiveTradeMessageType::TradeOrderRevisionProposed) + .unwrap(); + let revision_decision_name = + serde_json::to_value(RadrootsActiveTradeMessageType::TradeOrderRevisionDecision) + .unwrap(); let fulfillment_name = serde_json::to_value(RadrootsActiveTradeMessageType::TradeFulfillmentUpdated).unwrap(); let cancellation_name = @@ -1279,6 +1322,14 @@ mod tests { assert_eq!(request_name, serde_json::json!("TradeOrderRequested")); assert_eq!(decision_name, serde_json::json!("TradeOrderDecision")); assert_eq!( + revision_proposed_name, + serde_json::json!("TradeOrderRevisionProposed") + ); + assert_eq!( + revision_decision_name, + serde_json::json!("TradeOrderRevisionDecision") + ); + assert_eq!( fulfillment_name, serde_json::json!("TradeFulfillmentUpdated") ); @@ -1723,7 +1774,7 @@ mod tests { ), ( RadrootsTradeMessageType::DiscountDecline, - KIND_TRADE_DISCOUNT_DECLINE, + KIND_TRADE_FORBIDDEN_3431, false, true, true, @@ -1832,8 +1883,8 @@ mod tests { Some(RadrootsTradeMessageType::DiscountAccept) ); assert_eq!( - RadrootsTradeMessageType::from_kind(KIND_TRADE_DISCOUNT_DECLINE), - Some(RadrootsTradeMessageType::DiscountDecline) + RadrootsTradeMessageType::from_kind(KIND_TRADE_FORBIDDEN_3431), + None ); assert_eq!( RadrootsTradeMessageType::from_kind(KIND_TRADE_CANCEL), diff --git a/crates/events_codec/src/trade/decode.rs b/crates/events_codec/src/trade/decode.rs @@ -656,7 +656,8 @@ mod tests { RadrootsNostrEvent, RadrootsNostrEventPtr, kinds::{ KIND_TRADE_CANCEL, KIND_TRADE_FULFILLMENT_UPDATE, KIND_TRADE_ORDER_DECISION, - KIND_TRADE_ORDER_REQUEST, KIND_TRADE_RECEIPT, + KIND_TRADE_ORDER_REQUEST, KIND_TRADE_ORDER_REVISION, + KIND_TRADE_ORDER_REVISION_RESPONSE, KIND_TRADE_RECEIPT, }, tags::{TAG_D, TAG_E_PREV, TAG_E_ROOT}, trade::{ @@ -1080,6 +1081,46 @@ mod tests { } #[test] + fn active_revision_kinds_parse_with_chain_tags() { + for (kind, message_type) in [ + ( + KIND_TRADE_ORDER_REVISION, + RadrootsActiveTradeMessageType::TradeOrderRevisionProposed, + ), + ( + KIND_TRADE_ORDER_REVISION_RESPONSE, + RadrootsActiveTradeMessageType::TradeOrderRevisionDecision, + ), + ] { + let envelope = RadrootsActiveTradeEnvelope::new( + message_type, + "30402:seller:AAAAAAAAAAAAAAAAAAAAAg", + "order-1", + &serde_json::json!({}), + ); + let event = RadrootsNostrEvent { + id: "event-id".into(), + author: "seller".into(), + created_at: 1, + kind, + tags: vec![ + vec!["p".into(), "buyer".into()], + vec!["a".into(), "30402:seller:AAAAAAAAAAAAAAAAAAAAAg".into()], + vec![TAG_D.into(), "order-1".into()], + vec![TAG_E_ROOT.into(), "root-event".into()], + vec![TAG_E_PREV.into(), "prev-event".into()], + ], + content: serde_json::to_string(&envelope).unwrap(), + sig: "sig".into(), + }; + let parsed = active_trade_envelope_from_event::<serde_json::Value>(&event).unwrap(); + + assert_eq!(parsed.message_type, message_type); + assert_eq!(parsed.order_id, "order-1"); + } + } + + #[test] fn active_parse_rejects_forbidden_kind() { let event = RadrootsNostrEvent { id: "event-id".into(), diff --git a/crates/sdk/src/adapters/radrootsd.rs b/crates/sdk/src/adapters/radrootsd.rs @@ -294,7 +294,6 @@ pub enum SdkRadrootsdPublicTradePublishValidationError { InvalidOrderRevisionAcceptPayload, InvalidOrderRevisionDeclinePayload, InvalidDiscountAcceptPayload, - InvalidDiscountDeclinePayload, EmptyField(&'static str), } @@ -334,9 +333,6 @@ impl fmt::Display for SdkRadrootsdPublicTradePublishValidationError { Self::InvalidDiscountAcceptPayload => f.write_str( "trade public publish discount accept payload must be an accept decision", ), - Self::InvalidDiscountDeclinePayload => f.write_str( - "trade public publish discount decline payload must be a decline decision", - ), Self::EmptyField(field) => write!(f, "trade public publish field `{field}` must not be empty"), } } @@ -542,19 +538,6 @@ impl SdkRadrootsdPublicTradePublishRequest { ) } - pub fn discount_decline( - route: &SdkRadrootsdPublicTradeRoute, - chain: &SdkRadrootsdTradeChain, - payload: trade::RadrootsTradeDiscountDecision, - ) -> Result<Self, SdkRadrootsdPublicTradePublishValidationError> { - Self::from_components( - route, - Some(chain), - None, - trade::RadrootsTradeMessagePayload::DiscountDecline(payload), - ) - } - pub fn cancel( route: &SdkRadrootsdPublicTradeRoute, chain: &SdkRadrootsdTradeChain, @@ -667,11 +650,11 @@ impl SdkRadrootsdPublicTradePublishRequest { SdkRadrootsdPublicTradePublishValidationError::InvalidDiscountAcceptPayload, ) } - trade::RadrootsTradeMessagePayload::DiscountDecline( - trade::RadrootsTradeDiscountDecision::Accept { .. }, - ) => { + trade::RadrootsTradeMessagePayload::DiscountDecline(_) => { return Err( - SdkRadrootsdPublicTradePublishValidationError::InvalidDiscountDeclinePayload, + SdkRadrootsdPublicTradePublishValidationError::UnsupportedPayload( + trade::RadrootsTradeMessageType::DiscountDecline, + ), ) } _ => {} @@ -1239,19 +1222,6 @@ pub(crate) async fn publish_public_trade( ) .await } - trade::RadrootsTradeMessagePayload::DiscountDecline(payload) => { - public_trade_call( - endpoint, - auth, - "bridge.order.discount.decline", - request, - payload, - signer_session_id, - idempotency_key, - timeout, - ) - .await - } trade::RadrootsTradeMessagePayload::Cancel(payload) => { public_trade_call( endpoint, @@ -1293,7 +1263,8 @@ pub(crate) async fn publish_public_trade( } trade::RadrootsTradeMessagePayload::ListingValidateRequest(_) | trade::RadrootsTradeMessagePayload::ListingValidateResult(_) - | trade::RadrootsTradeMessagePayload::OrderRequest(_) => { + | trade::RadrootsTradeMessagePayload::OrderRequest(_) + | trade::RadrootsTradeMessagePayload::DiscountDecline(_) => { unreachable!("unsupported trade payload should be rejected by the curated client") } } diff --git a/crates/sdk/src/client.rs b/crates/sdk/src/client.rs @@ -1629,18 +1629,6 @@ impl SdkRadrootsdPublicTradeMessage { }) } - pub fn discount_decline( - route: &radrootsd::SdkRadrootsdPublicTradeRoute, - chain: &radrootsd::SdkRadrootsdTradeChain, - payload: trade::RadrootsTradeDiscountDecision, - ) -> Result<Self, radrootsd::SdkRadrootsdPublicTradePublishValidationError> { - Ok(Self { - request: radrootsd::SdkRadrootsdPublicTradePublishRequest::discount_decline( - route, chain, payload, - )?, - }) - } - pub fn cancel( route: &radrootsd::SdkRadrootsdPublicTradeRoute, chain: &radrootsd::SdkRadrootsdTradeChain,