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:
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,