sdk

Radroots SDK and bindings
git clone https://radroots.dev/git/sdk.git
Log | Files | Refs | README

commit 27af62af1144c9fdbf59759fd65a25ac2f646a42
parent 309787049b99e87de57dfb697b09713a70b8d114
Author: triesap <tyson@radroots.org>
Date:   Sun, 14 Jun 2026 02:35:47 -0700

sdk: align listing address facade

- expose canonical listing address IDs from the SDK order surface
- remove stale order listing address type names from client facades
- update SDK listing fixtures to use valid deterministic seller pubkeys
- validate with cargo fmt --all -- --check, cargo check --workspace, and cargo test --workspace

Diffstat:
MCargo.lock | 9+++++++++
Mcrates/sdk/src/client.rs | 2+-
Mcrates/sdk/src/lib.rs | 5++---
Mcrates/sdk/src/order.rs | 8++++----
Mcrates/sdk/tests/client.rs | 6+++---
Mcrates/sdk/tests/facade.rs | 6+++---
6 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -1516,6 +1516,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] +name = "radroots_authority" +version = "0.1.0-alpha.2" +dependencies = [ + "radroots_events", + "thiserror 1.0.69", +] + +[[package]] name = "radroots_core" version = "0.1.0-alpha.2" dependencies = [ @@ -1874,6 +1882,7 @@ version = "0.1.0-alpha.2" dependencies = [ "base64 0.22.1", "hex", + "radroots_authority", "radroots_core", "radroots_events", "radroots_events_codec", diff --git a/crates/sdk/src/client.rs b/crates/sdk/src/client.rs @@ -1989,7 +1989,7 @@ impl<'a> TradeClient<'a> { pub fn parse_listing_address( &self, listing_addr: &str, - ) -> Result<order::RadrootsOrderListingAddress, order::RadrootsOrderListingAddressError> { + ) -> Result<order::RadrootsListingAddress, order::RadrootsIdParseError> { order::parse_listing_address(listing_addr) } diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs @@ -59,13 +59,12 @@ pub use radroots_events::{ RadrootsNostrEvent, RadrootsNostrEventPtr, RadrootsNostrEventRef, draft::{RadrootsFrozenEventDraft, RadrootsSignedNostrEvent}, farm::RadrootsFarm, + ids::{RadrootsIdParseError, RadrootsListingAddress}, listing::RadrootsListing, profile::{RadrootsProfile, RadrootsProfileType}, }; #[cfg(feature = "serde_json")] -pub use radroots_events_codec::order::{ - RadrootsOrderEnvelopeParseError, RadrootsOrderListingAddress, RadrootsOrderListingAddressError, -}; +pub use radroots_events_codec::order::RadrootsOrderEnvelopeParseError; pub use radroots_events_codec::wire::WireEventParts; pub use radroots_trade::listing::validation::RadrootsTradeListing as TradeListingValidateResult; diff --git a/crates/sdk/src/order.rs b/crates/sdk/src/order.rs @@ -1,10 +1,10 @@ +pub use radroots_events::ids::{RadrootsIdParseError, RadrootsListingAddress}; pub use radroots_events::order::*; pub use radroots_events::trade_validation::*; pub use radroots_events_codec::error::EventEncodeError; #[cfg(feature = "serde_json")] pub use radroots_events_codec::order::{ - RadrootsOrderEnvelopeParseError, RadrootsOrderEventContext, RadrootsOrderListingAddress, - RadrootsOrderListingAddressError, + RadrootsOrderEnvelopeParseError, RadrootsOrderEventContext, }; pub use radroots_trade::listing::validation::RadrootsTradeListing as TradeListingValidateResult; @@ -269,8 +269,8 @@ pub fn parse_buyer_receipt( #[cfg(feature = "serde_json")] pub fn parse_listing_address( listing_addr: &str, -) -> Result<RadrootsOrderListingAddress, RadrootsOrderListingAddressError> { - RadrootsOrderListingAddress::parse(listing_addr) +) -> Result<RadrootsListingAddress, RadrootsIdParseError> { + RadrootsListingAddress::parse(listing_addr) } #[cfg(feature = "serde_json")] diff --git a/crates/sdk/tests/client.rs b/crates/sdk/tests/client.rs @@ -47,7 +47,7 @@ fn sample_listing() -> RadrootsListing { d_tag: "AAAAAAAAAAAAAAAAAAAAAg".parse().expect("listing d tag"), published_at: None, farm: RadrootsFarmRef { - pubkey: "seller".into(), + pubkey: "a".repeat(64), d_tag: "AAAAAAAAAAAAAAAAAAAAAA".into(), }, product: RadrootsListingProduct { @@ -497,7 +497,7 @@ fn listing_and_order_clients_wrap_existing_sdk_facades() { let event = RadrootsNostrEvent { id: "listing-1".into(), - author: "seller".into(), + author: listing_value.farm.pubkey.clone(), created_at: 1, kind: draft.as_wire_parts().kind, tags: draft.as_wire_parts().tags.clone(), @@ -545,7 +545,7 @@ fn listing_and_order_clients_wrap_existing_sdk_facades() { .order() .parse_listing_address(&listing_addr) .expect("listing address"); - assert_eq!(parsed_addr.listing_id, listing_value.d_tag); + assert_eq!(parsed_addr, listing_addr); } #[test] diff --git a/crates/sdk/tests/facade.rs b/crates/sdk/tests/facade.rs @@ -50,7 +50,7 @@ fn sample_listing() -> RadrootsListing { d_tag: "AAAAAAAAAAAAAAAAAAAAAg".parse().expect("listing d tag"), published_at: None, farm: RadrootsFarmRef { - pubkey: "seller".into(), + pubkey: "a".repeat(64), d_tag: "AAAAAAAAAAAAAAAAAAAAAA".into(), }, product: RadrootsListingProduct { @@ -112,7 +112,7 @@ fn listing_event(listing_value: &RadrootsListing) -> RadrootsNostrEvent { let parts = listing::build_draft(listing_value).expect("listing draft"); RadrootsNostrEvent { id: "event-1".into(), - author: "seller".into(), + author: listing_value.farm.pubkey.clone(), created_at: 1, kind: parts.as_wire_parts().kind, tags: parts.as_wire_parts().tags.clone(), @@ -252,7 +252,7 @@ fn order_facade_wraps_build_parse_and_address_ops() { assert_eq!(parts.as_wire_parts().kind, KIND_ORDER_REQUEST); let parsed_addr = order::parse_listing_address(&listing_addr).expect("listing address"); - assert_eq!(parsed_addr.listing_id, listing_value.d_tag); + assert_eq!(parsed_addr, listing_addr); let event = RadrootsNostrEvent { id: core::iter::repeat_n('b', 64).collect(),