commit b743b87c31b4b51d82e7148ba4fedbf8d5b35250 parent ba79ad1f6641b3ec86ffad50c1672f49134e78ab Author: triesap <tyson@radroots.org> Date: Mon, 15 Jun 2026 17:30:25 -0700 sdk: narrow protocol adapter surfaces Diffstat:
24 files changed, 95 insertions(+), 150 deletions(-)
diff --git a/crates/sdk/src/adapters/radrootsd.rs b/crates/sdk/src/adapters/radrootsd.rs @@ -7,8 +7,8 @@ use crate::listing; use crate::listing::RadrootsListing; use crate::order; use crate::profile::{RadrootsProfile, RadrootsProfileType}; -use crate::{RadrootsNostrEvent, RadrootsNostrEventPtr}; use radroots_events::kinds::KIND_LISTING; +use radroots_events::{RadrootsNostrEvent, RadrootsNostrEventPtr}; use reqwest::header::{AUTHORIZATION, CONTENT_TYPE, HeaderMap, HeaderValue}; use serde::{Deserialize, Serialize, de::DeserializeOwned}; use serde_json::{Value, json}; diff --git a/crates/sdk/src/adapters/signing.rs b/crates/sdk/src/adapters/signing.rs @@ -1,5 +1,5 @@ -use crate::WireEventParts; use crate::identity::RadrootsIdentity; +use radroots_events_codec::wire::WireEventParts; use radroots_nostr::prelude::{RadrootsNostrError, radroots_nostr_build_event}; pub type SignedNostrEvent = radroots_nostr::prelude::RadrootsNostrEvent; @@ -28,7 +28,8 @@ pub fn sign_builder_with_identity( #[cfg(test)] mod tests { use super::{event_builder_from_parts, sign_parts_with_identity}; - use crate::{WireEventParts, identity::RadrootsIdentity}; + use crate::identity::RadrootsIdentity; + use radroots_events_codec::wire::WireEventParts; #[test] fn event_builder_from_parts_preserves_kind_and_content() { diff --git a/crates/sdk/src/client.rs b/crates/sdk/src/client.rs @@ -20,10 +20,7 @@ use crate::config::{RadrootsSdkConfig, SdkConfigError, SdkTransportMode}; feature = "signing" ))] use crate::identity::RadrootsIdentity; -use crate::{ - NostrTags, RadrootsNostrEvent, RadrootsNostrEventPtr, RadrootsProfile, RadrootsProfileType, - TradeListingValidateResult, WireEventParts, farm, listing, order, profile, -}; +use crate::{farm, listing, order, profile}; #[cfg(any( feature = "radrootsd-client", all( @@ -33,9 +30,17 @@ use crate::{ ) ))] use core::time::Duration; -use radroots_events::ids::RadrootsEventId; #[cfg(feature = "radrootsd-client")] use radroots_events::kinds::{KIND_FARM, KIND_LISTING}; +use radroots_events::{ + RadrootsNostrEvent, RadrootsNostrEventPtr, + ids::RadrootsEventId, + profile::{RadrootsProfile, RadrootsProfileType}, +}; +use radroots_events_codec::wire::WireEventParts; +use radroots_trade::listing::validation::RadrootsTradeListing as TradeListingValidateResult; + +type NostrTags = Vec<Vec<String>>; #[derive(Debug, Clone, PartialEq, Eq)] pub struct SdkPublishReceipt { @@ -2602,10 +2607,10 @@ mod tests { use super::{ SdkPublishError, SdkRelayFailure, SdkTransportMode, sdk_publish_receipt_from_relay_output, }; - use crate::WireEventParts; use crate::adapters::relay::RelayOutput; use crate::adapters::signing::sign_parts_with_identity; use crate::identity::RadrootsIdentity; + use radroots_events_codec::wire::WireEventParts; use radroots_nostr::prelude::RadrootsNostrEventId; use std::collections::{HashMap, HashSet}; diff --git a/crates/sdk/src/farm.rs b/crates/sdk/src/farm.rs @@ -1,7 +1,7 @@ pub use radroots_events::farm::*; pub use radroots_events_codec::error::EventEncodeError; -use crate::WireEventParts; +use radroots_events_codec::wire::WireEventParts; #[cfg(feature = "serde_json")] pub fn build_draft(farm: &RadrootsFarm) -> Result<WireEventParts, EventEncodeError> { diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs @@ -4,27 +4,15 @@ #[cfg(not(feature = "std"))] extern crate alloc; -#[cfg(not(feature = "std"))] -use alloc::{string::String, vec::Vec}; -#[cfg(feature = "std")] -use std::{string::String, vec::Vec}; - -pub(crate) use radroots_events::{ - RadrootsNostrEvent, RadrootsNostrEventPtr, - profile::{RadrootsProfile, RadrootsProfileType}, -}; -pub(crate) use radroots_events_codec::wire::WireEventParts; -pub(crate) use radroots_trade::listing::validation::RadrootsTradeListing as TradeListingValidateResult; - #[cfg(any( feature = "radrootsd-client", feature = "signing", feature = "relay-client", feature = "signer-adapters" ))] -mod adapters; -mod client; -mod config; +pub mod adapters; +pub mod client; +pub mod config; #[cfg(feature = "runtime")] mod error; mod farm; @@ -79,5 +67,3 @@ pub use crate::sync_runtime::{ PUSH_OUTBOX_DEFAULT_LIMIT, PUSH_OUTBOX_MAX_LIMIT, PushOutboxEventReceipt, PushOutboxEventState, PushOutboxReceipt, PushOutboxRelayOutcomeKind, PushOutboxRelayReceipt, PushOutboxRequest, }; - -pub(crate) type NostrTags = Vec<Vec<String>>; diff --git a/crates/sdk/src/listing.rs b/crates/sdk/src/listing.rs @@ -4,7 +4,15 @@ pub use radroots_events::trade_validation::RadrootsTradeValidationListingError; pub use radroots_events_codec::error::EventEncodeError; pub use radroots_trade::listing::validation::RadrootsTradeListing as TradeListingValidateResult; -use crate::{NostrTags, RadrootsNostrEvent, WireEventParts}; +#[cfg(not(feature = "std"))] +use alloc::{string::String, vec::Vec}; +#[cfg(feature = "std")] +use std::{string::String, vec::Vec}; + +use radroots_events::RadrootsNostrEvent; +use radroots_events_codec::wire::WireEventParts; + +pub type NostrTags = Vec<Vec<String>>; #[derive(Debug, Clone)] pub struct RadrootsListingDraft { diff --git a/crates/sdk/src/order.rs b/crates/sdk/src/order.rs @@ -8,8 +8,8 @@ pub use radroots_events_codec::order::{ }; pub use radroots_trade::listing::validation::RadrootsTradeListing as TradeListingValidateResult; -use crate::{RadrootsNostrEvent, RadrootsNostrEventPtr, WireEventParts}; -use radroots_events::ids::RadrootsEventId; +use radroots_events::{RadrootsNostrEvent, RadrootsNostrEventPtr, ids::RadrootsEventId}; +use radroots_events_codec::wire::WireEventParts; #[derive(Debug, Clone)] pub struct RadrootsOrderRequestDraft { diff --git a/crates/sdk/src/profile.rs b/crates/sdk/src/profile.rs @@ -1,7 +1,7 @@ pub use radroots_events::profile::{RadrootsProfile, RadrootsProfileType}; pub use radroots_events_codec::profile::error::ProfileEncodeError; -use crate::WireEventParts; +use radroots_events_codec::wire::WireEventParts; #[cfg(feature = "serde_json")] pub fn build_draft( diff --git a/crates/sdk/src/protocol.rs b/crates/sdk/src/protocol.rs @@ -1,90 +0,0 @@ -#![forbid(unsafe_code)] - -#[cfg(not(feature = "std"))] -use alloc::{string::String, vec::Vec}; -#[cfg(feature = "std")] -use std::{string::String, vec::Vec}; - -#[cfg(any( - feature = "radrootsd-client", - feature = "signing", - feature = "relay-client", - feature = "signer-adapters" -))] -pub mod adapters { - pub use crate::adapters::*; -} - -pub mod client { - pub use crate::client::*; -} - -pub mod config { - pub use crate::config::*; -} - -pub mod farm { - pub use crate::farm::*; -} - -#[cfg(feature = "identity-models")] -pub mod identity { - pub use crate::identity::*; -} - -pub mod listing { - pub use crate::listing::*; -} - -pub mod order { - pub use crate::order::*; -} - -pub mod profile { - pub use crate::profile::*; -} - -#[cfg(feature = "radrootsd-client")] -pub use crate::adapters::radrootsd::{ - SdkRadrootsdBridgeDeliveryPolicy, SdkRadrootsdBridgeJobStatus, - SdkRadrootsdBridgeRelayPublishResult, SdkRadrootsdSignerAuthority, - SdkRadrootsdSignerSessionConnectRequest, SdkRadrootsdSignerSessionMode, - SdkRadrootsdSignerSessionRole, -}; -pub use crate::client::{ - FarmClient, ListingClient, ProfileClient, RadrootsSdkClient, SdkPublishError, - SdkPublishReceipt, SdkRadrootsdPublishReceipt, SdkRelayFailure, SdkRelayPublishReceipt, - SdkResolvedTransportTarget, SdkTransportReceipt, TradeClient, -}; -#[cfg(feature = "radrootsd-client")] -pub use crate::client::{ - RadrootsdBridgeClient, RadrootsdClient, RadrootsdSignerSessionClient, SdkRadrootsdBridgeError, - SdkRadrootsdBridgeJobRef, SdkRadrootsdBridgeJobView, SdkRadrootsdBridgeStatus, - SdkRadrootsdFarmPublishOptions, SdkRadrootsdListingPublishOptions, - SdkRadrootsdOrderRequestPublishOptions, SdkRadrootsdProfilePublishOptions, - SdkRadrootsdSessionError, SdkRadrootsdSignerSessionAuthorizeResult, - SdkRadrootsdSignerSessionCloseResult, SdkRadrootsdSignerSessionHandle, - SdkRadrootsdSignerSessionPublicKeyResult, SdkRadrootsdSignerSessionRef, - SdkRadrootsdSignerSessionRequireAuthResult, SdkRadrootsdSignerSessionView, -}; -pub use crate::config::{ - NetworkConfig, RADROOTS_SDK_LOCAL_RADROOTSD_ENDPOINT, RADROOTS_SDK_LOCAL_RELAY_URL, - RADROOTS_SDK_PRODUCTION_RADROOTSD_ENDPOINT, RADROOTS_SDK_PRODUCTION_RELAY_URL, - RADROOTS_SDK_STAGING_RADROOTSD_ENDPOINT, RADROOTS_SDK_STAGING_RELAY_URL, RadrootsSdkConfig, - RadrootsdAuth, RadrootsdConfig, RelayConfig, SdkConfigError, SdkEnvironment, SdkTransportMode, - SignerConfig, -}; -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; -pub use radroots_events_codec::wire::WireEventParts; -pub use radroots_trade::listing::validation::RadrootsTradeListing as TradeListingValidateResult; - -pub type NostrTags = Vec<Vec<String>>; diff --git a/crates/sdk/src/protocol/events.rs b/crates/sdk/src/protocol/events.rs @@ -0,0 +1,4 @@ +pub use radroots_events::{ + RadrootsNostrEvent, RadrootsNostrEventPtr, RadrootsNostrEventRef, + draft::{RadrootsFrozenEventDraft, RadrootsSignedNostrEvent}, +}; diff --git a/crates/sdk/src/protocol/farm.rs b/crates/sdk/src/protocol/farm.rs @@ -0,0 +1 @@ +pub use crate::farm::*; diff --git a/crates/sdk/src/protocol/identity.rs b/crates/sdk/src/protocol/identity.rs @@ -0,0 +1 @@ +pub use crate::identity::*; diff --git a/crates/sdk/src/protocol/listing.rs b/crates/sdk/src/protocol/listing.rs @@ -0,0 +1 @@ +pub use crate::listing::*; diff --git a/crates/sdk/src/protocol/mod.rs b/crates/sdk/src/protocol/mod.rs @@ -0,0 +1,10 @@ +#![forbid(unsafe_code)] + +pub mod events; +pub mod farm; +#[cfg(feature = "identity-models")] +pub mod identity; +pub mod listing; +pub mod order; +pub mod profile; +pub mod wire; diff --git a/crates/sdk/src/protocol/order.rs b/crates/sdk/src/protocol/order.rs @@ -0,0 +1 @@ +pub use crate::order::*; diff --git a/crates/sdk/src/protocol/profile.rs b/crates/sdk/src/protocol/profile.rs @@ -0,0 +1 @@ +pub use crate::profile::*; diff --git a/crates/sdk/src/protocol/wire.rs b/crates/sdk/src/protocol/wire.rs @@ -0,0 +1,8 @@ +#[cfg(not(feature = "std"))] +use alloc::{string::String, vec::Vec}; +#[cfg(feature = "std")] +use std::{string::String, vec::Vec}; + +pub use radroots_events_codec::wire::WireEventParts; + +pub type NostrTags = Vec<Vec<String>>; diff --git a/crates/sdk/tests/client.rs b/crates/sdk/tests/client.rs @@ -22,12 +22,16 @@ use radroots_events::order::{ RadrootsOrderRevisionDecision, RadrootsOrderRevisionOutcome, RadrootsOrderRevisionProposal, }; use radroots_events::profile::{RadrootsProfile, RadrootsProfileType}; -use radroots_sdk::protocol::{ - RADROOTS_SDK_PRODUCTION_RELAY_URL, RadrootsNostrEvent, RadrootsNostrEventPtr, - RadrootsSdkClient, RadrootsSdkConfig, RelayConfig, SdkConfigError, SdkEnvironment, - SdkPublishError, SdkRadrootsdPublishReceipt, SdkRelayFailure, SdkResolvedTransportTarget, - SdkTransportMode, SignerConfig, WireEventParts, +use radroots_sdk::client::{ + RadrootsSdkClient, SdkPublishError, SdkRadrootsdPublishReceipt, SdkRelayFailure, + SdkResolvedTransportTarget, }; +use radroots_sdk::config::{ + RADROOTS_SDK_PRODUCTION_RELAY_URL, RadrootsSdkConfig, RelayConfig, SdkConfigError, + SdkEnvironment, SdkTransportMode, SignerConfig, +}; +use radroots_sdk::protocol::events::{RadrootsNostrEvent, RadrootsNostrEventPtr}; +use radroots_sdk::protocol::wire::WireEventParts; fn sample_farm() -> RadrootsFarm { RadrootsFarm { diff --git a/crates/sdk/tests/config.rs b/crates/sdk/tests/config.rs @@ -1,4 +1,4 @@ -use radroots_sdk::protocol::{ +use radroots_sdk::config::{ NetworkConfig, RADROOTS_SDK_LOCAL_RADROOTSD_ENDPOINT, RADROOTS_SDK_LOCAL_RELAY_URL, RADROOTS_SDK_PRODUCTION_RADROOTSD_ENDPOINT, RADROOTS_SDK_PRODUCTION_RELAY_URL, RADROOTS_SDK_STAGING_RADROOTSD_ENDPOINT, RADROOTS_SDK_STAGING_RELAY_URL, RadrootsSdkConfig, diff --git a/crates/sdk/tests/facade.rs b/crates/sdk/tests/facade.rs @@ -15,9 +15,8 @@ use radroots_events::order::{ RadrootsOrderPricingBasis, RadrootsOrderRequest, }; use radroots_events::profile::{RadrootsProfile, RadrootsProfileType}; -use radroots_sdk::protocol::{ - RadrootsNostrEvent, RadrootsNostrEventPtr, farm, listing, order, profile, -}; +use radroots_sdk::protocol::events::{RadrootsNostrEvent, RadrootsNostrEventPtr}; +use radroots_sdk::protocol::{farm, listing, order, profile}; fn sample_profile() -> RadrootsProfile { RadrootsProfile { diff --git a/crates/sdk/tests/orders_runtime.rs b/crates/sdk/tests/orders_runtime.rs @@ -13,14 +13,14 @@ use radroots_nostr::prelude::{ RadrootsNostrKeys, RadrootsNostrSecretKey, RadrootsNostrTimestamp, radroots_event_from_nostr, radroots_nostr_build_event, }; -use radroots_sdk::protocol::RadrootsNostrEventPtr; -use radroots_sdk::protocol::WireEventParts; +use radroots_sdk::protocol::events::RadrootsNostrEventPtr; use radroots_sdk::protocol::order::{ RadrootsListingAddress, RadrootsOrderDecision, RadrootsOrderDecisionOutcome, RadrootsOrderEconomicItem, RadrootsOrderEconomicLine, RadrootsOrderEconomics, RadrootsOrderInventoryCommitment, RadrootsOrderItem, RadrootsOrderPricingBasis, RadrootsOrderRequest, }; +use radroots_sdk::protocol::wire::WireEventParts; use radroots_sdk::{ ORDER_STATUS_DEFAULT_LIMIT, ORDER_STATUS_MAX_LIMIT, OrderPaymentStateKind, OrderSettlementStateKind, OrderStatusKind, OrderStatusRequest, RadrootsSdk, RadrootsSdkError, diff --git a/crates/sdk/tests/radrootsd.rs b/crates/sdk/tests/radrootsd.rs @@ -9,11 +9,23 @@ use radroots_events::ids::RadrootsPublicKey; use radroots_events::kinds::{ KIND_FARM, KIND_LISTING, KIND_LISTING_DRAFT, KIND_ORDER_REQUEST, KIND_PROFILE, }; -use radroots_sdk::protocol::adapters::radrootsd::{ - SdkRadrootsdBridgeJob, SdkRadrootsdBridgePublishResponse, SdkRadrootsdListingPublishRequest, +use radroots_sdk::adapters::radrootsd::{ + SdkRadrootsdBridgeDeliveryPolicy, SdkRadrootsdBridgeJob, SdkRadrootsdBridgeJobStatus, + SdkRadrootsdBridgePublishResponse, SdkRadrootsdListingPublishRequest, SdkRadrootsdSignerAuthority, SdkRadrootsdSignerSessionConnectRequest, - SdkRadrootsdSignerSessionMode, + SdkRadrootsdSignerSessionMode, SdkRadrootsdSignerSessionRole, }; +use radroots_sdk::client::{ + RadrootsSdkClient, SdkPublishError, SdkRadrootsdBridgeError, SdkRadrootsdFarmPublishOptions, + SdkRadrootsdListingPublishOptions, SdkRadrootsdOrderRequestPublishOptions, + SdkRadrootsdProfilePublishOptions, SdkRadrootsdPublishReceipt, SdkRadrootsdSessionError, + SdkRadrootsdSignerSessionHandle, SdkRadrootsdSignerSessionView, SdkTransportReceipt, +}; +use radroots_sdk::config::{ + RadrootsSdkConfig, RadrootsdAuth, RadrootsdConfig, SdkConfigError, SdkEnvironment, + SdkTransportMode, SignerConfig, +}; +use radroots_sdk::protocol::events::{RadrootsNostrEvent, RadrootsNostrEventPtr}; use radroots_sdk::protocol::listing::{ RadrootsListing, RadrootsListingAvailability, RadrootsListingBin, RadrootsListingDeliveryMethod, RadrootsListingLocation, RadrootsListingParseError, @@ -23,16 +35,7 @@ use radroots_sdk::protocol::order::{ RadrootsOrderEconomicItem, RadrootsOrderEconomicLine, RadrootsOrderEconomics, RadrootsOrderItem, RadrootsOrderPricingBasis, RadrootsOrderRequest, }; -use radroots_sdk::protocol::{ - RadrootsNostrEvent, RadrootsNostrEventPtr, RadrootsProfile, RadrootsProfileType, - RadrootsSdkClient, RadrootsSdkConfig, RadrootsdAuth, RadrootsdConfig, SdkConfigError, - SdkEnvironment, SdkPublishError, SdkRadrootsdBridgeDeliveryPolicy, SdkRadrootsdBridgeError, - SdkRadrootsdBridgeJobStatus, SdkRadrootsdFarmPublishOptions, SdkRadrootsdListingPublishOptions, - SdkRadrootsdOrderRequestPublishOptions, SdkRadrootsdProfilePublishOptions, - SdkRadrootsdPublishReceipt, SdkRadrootsdSessionError, SdkRadrootsdSignerSessionHandle, - SdkRadrootsdSignerSessionRole, SdkRadrootsdSignerSessionView, SdkTransportMode, - SdkTransportReceipt, SignerConfig, -}; +use radroots_sdk::protocol::profile::{RadrootsProfile, RadrootsProfileType}; use serde_json::{Value, json}; use std::collections::VecDeque; use tokio::io::{AsyncReadExt, AsyncWriteExt}; diff --git a/crates/sdk/tests/relay_direct.rs b/crates/sdk/tests/relay_direct.rs @@ -11,6 +11,11 @@ use radroots_core::{ RadrootsCoreQuantityPrice, RadrootsCoreUnit, }; use radroots_events::ids::{RadrootsEventId, RadrootsPublicKey}; +use radroots_sdk::client::{RadrootsSdkClient, SdkPublishError, SdkTransportReceipt}; +use radroots_sdk::config::{ + RadrootsSdkConfig, RelayConfig, SdkEnvironment, SdkTransportMode, SignerConfig, +}; +use radroots_sdk::protocol::events::RadrootsNostrEventPtr; use radroots_sdk::protocol::farm::{RadrootsFarm, RadrootsFarmLocation, RadrootsFarmRef}; use radroots_sdk::protocol::identity::RadrootsIdentity; use radroots_sdk::protocol::listing::{ @@ -26,10 +31,6 @@ use radroots_sdk::protocol::order::{ RadrootsOrderRevisionDecision, RadrootsOrderRevisionOutcome, RadrootsOrderRevisionProposal, }; use radroots_sdk::protocol::profile::{RadrootsProfile, RadrootsProfileType}; -use radroots_sdk::protocol::{ - RadrootsNostrEventPtr, RadrootsSdkClient, RadrootsSdkConfig, RelayConfig, SdkEnvironment, - SdkPublishError, SdkTransportMode, SdkTransportReceipt, SignerConfig, -}; use tokio::net::TcpListener; use tokio::sync::oneshot; use tokio_tungstenite::tungstenite::Message; diff --git a/crates/sdk/tests/replica_ingest.rs b/crates/sdk/tests/replica_ingest.rs @@ -1,7 +1,8 @@ use radroots_replica_db::ReplicaSql; use radroots_replica_db_schema::farm::IFarmFindMany; use radroots_replica_sync::{RadrootsReplicaIngestOutcome, radroots_replica_ingest_event}; -use radroots_sdk::protocol::{RadrootsFarm, RadrootsNostrEvent, farm}; +use radroots_sdk::protocol::events::RadrootsNostrEvent; +use radroots_sdk::protocol::farm::{self, RadrootsFarm}; use radroots_sql_core::{SqlExecutor, SqliteExecutor}; use tempfile::{TempDir, tempdir};