commit 0da30c9e42d3ac45365bb4c306129a9543f11bd4
parent a528f0fee4606c62ebaa15698dcbc6b5c9ca41a3
Author: triesap <tyson@radroots.org>
Date: Mon, 6 Jul 2026 22:48:42 +0000
sdk: align workflow sync transport surfaces
Diffstat:
30 files changed, 777 insertions(+), 764 deletions(-)
diff --git a/crates/sdk/examples/runtime_local.rs b/crates/sdk/examples/runtime_local.rs
@@ -29,7 +29,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let actor = RadrootsActorContext::test(seller.as_str(), [RadrootsActorRole::Seller])?;
let listing = sample_listing(seller.as_str());
let prepare_request = ListingPreparePublishRequest::new(actor.clone(), listing);
- let target_relays = TargetPolicy::try_nostr_relays([RELAY], NostrRelayUrlPolicy::Public)?;
+ let target_policy = TargetPolicy::try_nostr_relays([RELAY], NostrRelayUrlPolicy::Public)?;
let idempotency_key = SdkIdempotencyKey::new("example-1")?;
let prepared = sdk.listings().prepare_publish(prepare_request)?;
@@ -38,7 +38,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
.enqueue_prepared_publish(
&actor,
prepared.clone(),
- target_relays,
+ target_policy,
Some(idempotency_key),
)
.await?;
@@ -58,7 +58,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
#[cfg(feature = "relay-runtime")]
assert!(matches!(
push,
- Err(RadrootsSdkError::ProductSyncRelaySetupFailure { .. })
+ Err(RadrootsSdkError::ProductSyncTransportSetupFailure { .. })
));
#[cfg(not(feature = "relay-runtime"))]
assert!(matches!(
diff --git a/crates/sdk/src/dvm_runtime.rs b/crates/sdk/src/dvm_runtime.rs
@@ -174,7 +174,7 @@ impl DvmTradeTransitionProofPrepareRequest {
pub struct DvmTradeTransitionProofEnqueueRequest {
#[serde(flatten)]
pub prepare: DvmTradeTransitionProofPrepareRequest,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub idempotency_key: Option<SdkIdempotencyKey>,
}
@@ -188,7 +188,7 @@ impl DvmTradeTransitionProofEnqueueRequest {
request_event_id: RadrootsEventId,
decision_event_id: RadrootsEventId,
inventory_bins: Vec<RadrootsTradeInventoryBinWitnessDto>,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
) -> Self {
Self::from_prepare(
DvmTradeTransitionProofPrepareRequest::new(
@@ -200,31 +200,31 @@ impl DvmTradeTransitionProofEnqueueRequest {
decision_event_id,
inventory_bins,
),
- target_relays,
+ target_policy,
)
}
pub fn from_prepare(
prepare: DvmTradeTransitionProofPrepareRequest,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
) -> Self {
Self {
prepare,
- target_relays,
+ target_policy,
idempotency_key: None,
}
}
- pub fn try_with_target_relays<I, S>(
+ pub fn try_with_nostr_targets<I, S>(
mut self,
- target_relays: I,
+ target_policy: I,
policy: NostrRelayUrlPolicy,
) -> Result<Self, RadrootsSdkError>
where
I: IntoIterator<Item = S>,
S: AsRef<str>,
{
- self.target_relays = TargetPolicy::try_nostr_relays(target_relays, policy)?;
+ self.target_policy = TargetPolicy::try_nostr_relays(target_policy, policy)?;
Ok(self)
}
@@ -420,7 +420,7 @@ impl<'sdk> DvmClient<'sdk> {
request: DvmTradeTransitionProofEnqueueRequest,
) -> Result<DvmTradeTransitionProofReceipt, RadrootsSdkError> {
let actor = request.prepare.actor.clone();
- let target_relays = request.target_relays.clone();
+ let target_policy = request.target_policy.clone();
let idempotency_key = request.idempotency_key.clone();
let plan = self.prepare_trade_transition_proof_request(request.prepare)?;
let enqueue = enqueue_configured_signed_workflow(
@@ -429,7 +429,7 @@ impl<'sdk> DvmClient<'sdk> {
operation_kind: DVM_TRADE_TRANSITION_PROOF_REQUEST_OPERATION_KIND,
actor: &actor,
frozen_draft: &plan.frozen_draft,
- target_relays,
+ target_policy,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key,
},
@@ -444,7 +444,7 @@ impl<'sdk> DvmClient<'sdk> {
signer: &dyn RadrootsEventSigner,
) -> Result<DvmTradeTransitionProofReceipt, RadrootsSdkError> {
let actor = request.prepare.actor.clone();
- let target_relays = request.target_relays.clone();
+ let target_policy = request.target_policy.clone();
let idempotency_key = request.idempotency_key.clone();
let plan = self.prepare_trade_transition_proof_request(request.prepare)?;
let enqueue = enqueue_signed_workflow(
@@ -453,7 +453,7 @@ impl<'sdk> DvmClient<'sdk> {
operation_kind: DVM_TRADE_TRANSITION_PROOF_REQUEST_OPERATION_KIND,
actor: &actor,
frozen_draft: &plan.frozen_draft,
- target_relays,
+ target_policy,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key,
},
diff --git a/crates/sdk/src/error.rs b/crates/sdk/src/error.rs
@@ -32,7 +32,7 @@ pub enum RadrootsSdkRecoveryAction {
InspectLocalStores,
InspectGeoNamesAsset,
RetryOperationWithSameIdempotencyKey,
- ConfigureRelayTargets,
+ ConfigureTransportTargets,
ConfigureGeoNamesCache,
ConfigureSigner,
FixRequest,
@@ -126,10 +126,10 @@ pub enum RadrootsSdkError {
operation: String,
reason: String,
},
- EmptyTargetRelays {
+ EmptyTransportTargets {
operation: String,
},
- RelayTargetLimitExceeded {
+ TransportTargetLimitExceeded {
max: usize,
actual: usize,
},
@@ -166,7 +166,7 @@ pub enum RadrootsSdkError {
operation: &'static str,
required_feature: &'static str,
},
- ProductSyncRelaySetupFailure {
+ ProductSyncTransportSetupFailure {
message: String,
},
Authority {
@@ -194,7 +194,7 @@ pub enum RadrootsSdkError {
kind: RadrootsSdkGeoNamesErrorKind,
message: String,
},
- RelayTransport {
+ Transport {
message: String,
},
Projection {
@@ -219,8 +219,8 @@ impl RadrootsSdkError {
Self::SignerTransport { .. } => "signer_transport",
Self::SignerProtocol { .. } => "signer_protocol",
Self::SignerReturnedEventDrift { .. } => "signer_returned_event_drift",
- Self::EmptyTargetRelays { .. } => "empty_target_relays",
- Self::RelayTargetLimitExceeded { .. } => "relay_target_limit_exceeded",
+ Self::EmptyTransportTargets { .. } => "empty_transport_targets",
+ Self::TransportTargetLimitExceeded { .. } => "transport_target_limit_exceeded",
Self::InvalidRelayUrl { .. } => "invalid_relay_url",
Self::IdempotencyConflict { .. } => "idempotency_conflict",
Self::TradeStatusLimitInvalid { .. } => "trade_status_limit_invalid",
@@ -228,7 +228,7 @@ impl RadrootsSdkError {
Self::TradeAmbiguous { .. } => "trade_ambiguous",
Self::PrivacyPreflight { .. } => "privacy_preflight",
Self::ProductSyncUnsupported { .. } => "product_sync_unsupported",
- Self::ProductSyncRelaySetupFailure { .. } => "product_sync_relay_setup_failure",
+ Self::ProductSyncTransportSetupFailure { .. } => "product_sync_transport_setup_failure",
Self::Authority { .. } => "authority",
Self::EventStore { .. } => "event_store",
Self::InvalidRequest { .. } => "invalid_request",
@@ -244,7 +244,7 @@ impl RadrootsSdkError {
RadrootsSdkGeoNamesErrorKind::Schema => "geonames_schema",
RadrootsSdkGeoNamesErrorKind::Lookup => "geonames_lookup",
},
- Self::RelayTransport { .. } => "relay_transport",
+ Self::Transport { .. } => "transport",
Self::Projection { .. } => "projection",
Self::PartialLocalMutation(_) => "partial_local_mutation",
}
@@ -274,8 +274,8 @@ impl RadrootsSdkError {
| Self::SignerReturnedEventDrift { .. }
| Self::Authority { .. } => RadrootsSdkErrorClass::Authorization,
Self::SignerUnavailable { .. } => RadrootsSdkErrorClass::Configuration,
- Self::EmptyTargetRelays { .. }
- | Self::RelayTargetLimitExceeded { .. }
+ Self::EmptyTransportTargets { .. }
+ | Self::TransportTargetLimitExceeded { .. }
| Self::InvalidRelayUrl { .. } => RadrootsSdkErrorClass::Configuration,
Self::IdempotencyConflict { .. }
| Self::TradeStatusLimitInvalid { .. }
@@ -288,8 +288,8 @@ impl RadrootsSdkError {
| Self::ListingDraft { .. }
| Self::ListingMutation { .. } => RadrootsSdkErrorClass::Request,
Self::ProductSyncUnsupported { .. } => RadrootsSdkErrorClass::Unsupported,
- Self::ProductSyncRelaySetupFailure { .. }
- | Self::RelayTransport { .. }
+ Self::ProductSyncTransportSetupFailure { .. }
+ | Self::Transport { .. }
| Self::SignerRequestTimedOut { .. }
| Self::SignerTransport { .. } => RadrootsSdkErrorClass::Transport,
Self::PartialLocalMutation(_) => RadrootsSdkErrorClass::LocalMutation,
@@ -300,7 +300,7 @@ impl RadrootsSdkError {
matches!(
self,
Self::Io { .. }
- | Self::ProductSyncRelaySetupFailure { .. }
+ | Self::ProductSyncTransportSetupFailure { .. }
| Self::EventStore { .. }
| Self::Outbox { .. }
| Self::PrivateStore { .. }
@@ -309,7 +309,7 @@ impl RadrootsSdkError {
| RadrootsSdkGeoNamesErrorKind::Download,
..
}
- | Self::RelayTransport { .. }
+ | Self::Transport { .. }
| Self::SignerRequestTimedOut { .. }
| Self::SignerTransport { .. }
| Self::Projection { .. }
@@ -344,10 +344,10 @@ impl RadrootsSdkError {
| Self::SignerReturnedEventDrift { .. }
| Self::Authority { .. } => vec![RadrootsSdkRecoveryAction::SelectAuthorizedActor],
Self::SignerUnavailable { .. } => vec![RadrootsSdkRecoveryAction::ConfigureSigner],
- Self::EmptyTargetRelays { .. }
- | Self::RelayTargetLimitExceeded { .. }
+ Self::EmptyTransportTargets { .. }
+ | Self::TransportTargetLimitExceeded { .. }
| Self::InvalidRelayUrl { .. } => {
- vec![RadrootsSdkRecoveryAction::ConfigureRelayTargets]
+ vec![RadrootsSdkRecoveryAction::ConfigureTransportTargets]
}
Self::IdempotencyConflict { .. } => {
vec![RadrootsSdkRecoveryAction::RetryOperationWithSameIdempotencyKey]
@@ -357,7 +357,7 @@ impl RadrootsSdkError {
Self::ProductSyncUnsupported { .. } => {
vec![RadrootsSdkRecoveryAction::EnableRequiredFeature]
}
- Self::ProductSyncRelaySetupFailure { .. } | Self::RelayTransport { .. } => {
+ Self::ProductSyncTransportSetupFailure { .. } | Self::Transport { .. } => {
vec![RadrootsSdkRecoveryAction::RetryAfterTransportFailure]
}
Self::SignerRequestTimedOut { .. } | Self::SignerTransport { .. } => {
@@ -410,8 +410,8 @@ impl RadrootsSdkError {
Self::SignerReturnedEventDrift { operation, reason } => {
json!({ "operation": operation, "reason": reason })
}
- Self::EmptyTargetRelays { operation } => json!({ "operation": operation }),
- Self::RelayTargetLimitExceeded { max, actual } => {
+ Self::EmptyTransportTargets { operation } => json!({ "operation": operation }),
+ Self::TransportTargetLimitExceeded { max, actual } => {
json!({ "max": max, "actual": actual })
}
Self::InvalidRelayUrl { url, reason } => json!({ "url": url, "reason": reason }),
@@ -454,7 +454,7 @@ impl RadrootsSdkError {
operation,
required_feature,
} => json!({ "operation": operation, "required_feature": required_feature }),
- Self::ProductSyncRelaySetupFailure { message }
+ Self::ProductSyncTransportSetupFailure { message }
| Self::Authority { message }
| Self::EventStore { message }
| Self::InvalidRequest { message }
@@ -462,7 +462,7 @@ impl RadrootsSdkError {
| Self::ListingMutation { message }
| Self::Outbox { message }
| Self::PrivateStore { message }
- | Self::RelayTransport { message }
+ | Self::Transport { message }
| Self::Projection { message } => json!({ "message": message }),
Self::GeoNames { kind, message } => json!({ "kind": kind, "message": message }),
Self::PartialLocalMutation(error) => json!(error),
@@ -513,14 +513,14 @@ impl RadrootsSdkError {
})
}
- pub(crate) fn empty_target_relays(operation: impl Into<String>) -> Self {
- Self::EmptyTargetRelays {
+ pub(crate) fn empty_transport_targets(operation: impl Into<String>) -> Self {
+ Self::EmptyTransportTargets {
operation: operation.into(),
}
}
- pub(crate) fn relay_target_limit_exceeded(max: usize, actual: usize) -> Self {
- Self::RelayTargetLimitExceeded { max, actual }
+ pub(crate) fn transport_target_limit_exceeded(max: usize, actual: usize) -> Self {
+ Self::TransportTargetLimitExceeded { max, actual }
}
pub(crate) fn invalid_relay_url(url: impl Into<String>, reason: impl Into<String>) -> Self {
@@ -601,13 +601,13 @@ impl fmt::Display for RadrootsSdkError {
"sdk signer returned event drift for {operation}: {reason}"
)
}
- Self::EmptyTargetRelays { operation } => {
- write!(f, "sdk empty target relays for {operation}")
+ Self::EmptyTransportTargets { operation } => {
+ write!(f, "sdk empty transport targets for {operation}")
}
- Self::RelayTargetLimitExceeded { max, actual } => {
+ Self::TransportTargetLimitExceeded { max, actual } => {
write!(
f,
- "sdk relay target limit exceeded: max={max}, actual={actual}"
+ "sdk transport target limit exceeded: max={max}, actual={actual}"
)
}
Self::InvalidRelayUrl { url, reason } => {
@@ -655,8 +655,8 @@ impl fmt::Display for RadrootsSdkError {
f,
"sdk product sync operation {operation} requires feature `{required_feature}`"
),
- Self::ProductSyncRelaySetupFailure { message } => {
- write!(f, "sdk product sync relay setup failed: {message}")
+ Self::ProductSyncTransportSetupFailure { message } => {
+ write!(f, "sdk product sync transport setup failed: {message}")
}
Self::Authority { message } => write!(f, "sdk authority error: {message}"),
Self::EventStore { message } => write!(f, "sdk event store error: {message}"),
@@ -670,8 +670,8 @@ impl fmt::Display for RadrootsSdkError {
Self::GeoNames { kind, message } => {
write!(f, "sdk GeoNames {kind:?} error: {message}")
}
- Self::RelayTransport { message } => {
- write!(f, "sdk relay transport error: {message}")
+ Self::Transport { message } => {
+ write!(f, "sdk transport error: {message}")
}
Self::Projection { message } => write!(f, "sdk projection error: {message}"),
Self::PartialLocalMutation(error) => write!(
@@ -824,7 +824,7 @@ impl From<radroots_outbox::RadrootsOutboxError> for RadrootsSdkError {
fn from(error: radroots_outbox::RadrootsOutboxError) -> Self {
match error {
radroots_outbox::RadrootsOutboxError::EmptyDeliveryTargets => {
- Self::empty_target_relays("outbox enqueue")
+ Self::empty_transport_targets("outbox enqueue")
}
radroots_outbox::RadrootsOutboxError::IdempotencyConflict {
operation_kind,
@@ -850,9 +850,9 @@ impl From<radroots_transport::RadrootsTransportError> for RadrootsSdkError {
fn from(error: radroots_transport::RadrootsTransportError) -> Self {
match error {
radroots_transport::RadrootsTransportError::EmptyTargetSet => {
- Self::empty_target_relays("transport target set")
+ Self::empty_transport_targets("transport target set")
}
- error => Self::RelayTransport {
+ error => Self::Transport {
message: error.to_string(),
},
}
@@ -896,11 +896,11 @@ impl From<radroots_transport_nostr::RadrootsRelayTransportError> for RadrootsSdk
format!("relay URL resolved to forbidden address `{address}`: {reason}"),
),
radroots_transport_nostr::RadrootsRelayTransportError::EmptyTargetSet => {
- Self::empty_target_relays("relay publish")
+ Self::empty_transport_targets("nostr relay publish")
}
#[cfg(feature = "runtime")]
radroots_transport_nostr::RadrootsRelayTransportError::Outbox(error) => error.into(),
- error => Self::RelayTransport {
+ error => Self::Transport {
message: error.to_string(),
},
}
diff --git a/crates/sdk/src/farms_runtime.rs b/crates/sdk/src/farms_runtime.rs
@@ -69,7 +69,7 @@ pub struct FarmEnqueuePublishRequest {
#[serde(serialize_with = "crate::actor_json::serialize_actor_context")]
pub actor: RadrootsActorContext,
pub farm: RadrootsFarm,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub idempotency_key: Option<SdkIdempotencyKey>,
pub created_at: Option<RadrootsSdkTimestamp>,
}
@@ -79,27 +79,27 @@ impl FarmEnqueuePublishRequest {
pub fn new(
actor: RadrootsActorContext,
farm: RadrootsFarm,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
) -> Self {
Self {
actor,
farm,
- target_relays,
+ target_policy,
idempotency_key: None,
created_at: None,
}
}
- pub fn try_with_target_relays<I, S>(
+ pub fn try_with_nostr_targets<I, S>(
mut self,
- target_relays: I,
+ target_policy: I,
policy: NostrRelayUrlPolicy,
) -> Result<Self, RadrootsSdkError>
where
I: IntoIterator<Item = S>,
S: AsRef<str>,
{
- self.target_relays = TargetPolicy::try_nostr_relays(target_relays, policy)?;
+ self.target_policy = TargetPolicy::try_nostr_relays(target_policy, policy)?;
Ok(self)
}
@@ -424,7 +424,7 @@ impl<'sdk> FarmsClient<'sdk> {
let FarmEnqueuePublishRequest {
actor,
farm,
- target_relays,
+ target_policy,
idempotency_key,
created_at,
} = request;
@@ -434,7 +434,7 @@ impl<'sdk> FarmsClient<'sdk> {
created_at,
};
let plan = self.prepare_publish(prepare_request)?;
- self.enqueue_prepared_publish(&actor, plan, target_relays, idempotency_key)
+ self.enqueue_prepared_publish(&actor, plan, target_policy, idempotency_key)
.await
}
@@ -446,7 +446,7 @@ impl<'sdk> FarmsClient<'sdk> {
let FarmEnqueuePublishRequest {
actor,
farm,
- target_relays,
+ target_policy,
idempotency_key,
created_at,
} = request;
@@ -459,7 +459,7 @@ impl<'sdk> FarmsClient<'sdk> {
self.enqueue_prepared_publish_with_explicit_signer(
&actor,
plan,
- target_relays,
+ target_policy,
idempotency_key,
signer,
)
@@ -471,7 +471,7 @@ impl<'sdk> FarmsClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: FarmPublishPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
) -> Result<FarmEnqueueReceipt, RadrootsSdkError> {
let enqueue = enqueue_configured_signed_workflow(
@@ -480,7 +480,7 @@ impl<'sdk> FarmsClient<'sdk> {
operation_kind: FARM_PUBLISH_OPERATION_KIND,
actor,
frozen_draft: &plan.frozen_draft,
- target_relays,
+ target_policy,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key,
},
@@ -493,7 +493,7 @@ impl<'sdk> FarmsClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: FarmPublishPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
signer: &dyn RadrootsEventSigner,
) -> Result<FarmEnqueueReceipt, RadrootsSdkError> {
@@ -503,7 +503,7 @@ impl<'sdk> FarmsClient<'sdk> {
operation_kind: FARM_PUBLISH_OPERATION_KIND,
actor,
frozen_draft: &plan.frozen_draft,
- target_relays,
+ target_policy,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key,
},
diff --git a/crates/sdk/src/idempotency.rs b/crates/sdk/src/idempotency.rs
@@ -45,13 +45,13 @@ impl SdkIdempotencyKey {
operation_kind: &'static str,
expected_event_id: &str,
expected_pubkey: &str,
- target_relays: &[String],
+ target_policy: &[String],
) -> Self {
let input = SdkIdempotencyDerivationInput {
operation_kind,
expected_event_id,
expected_pubkey,
- target_relays,
+ target_policy,
};
let bytes = serde_json::to_vec(&input).expect("idempotency derivation input serializes");
let digest = hex::encode(Sha256::digest(bytes));
@@ -86,7 +86,7 @@ struct SdkIdempotencyDerivationInput<'a> {
operation_kind: &'static str,
expected_event_id: &'a str,
expected_pubkey: &'a str,
- target_relays: &'a [String],
+ target_policy: &'a [String],
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize)]
diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs
@@ -217,11 +217,11 @@ pub use crate::signer_provider::{
pub use crate::sync_runtime::{
PUSH_OUTBOX_DEFAULT_CLAIM_TTL_MS, PUSH_OUTBOX_DEFAULT_LIMIT,
PUSH_OUTBOX_DEFAULT_NEXT_ATTEMPT_DELAY_MS, PUSH_OUTBOX_MAX_LIMIT, PushOutboxEventReceipt,
- PushOutboxEventState, PushOutboxReceipt, PushOutboxRelayOutcomeKind, PushOutboxRelayReceipt,
- PushOutboxRequest, SYNC_PROJECTION_REFRESH_DEFAULT_LIMIT, SYNC_PROJECTION_REFRESH_MAX_LIMIT,
- SdkRelayAuthPolicy, SyncEventStoreStatus, SyncOutboxStatus, SyncProjectionRefreshReceipt,
- SyncProjectionRefreshRequest, SyncRelayTargetSummary, SyncStatusReceipt, SyncStatusRequest,
- SyncStatusSource,
+ PushOutboxEventState, PushOutboxReceipt, PushOutboxRequest, PushOutboxTargetOutcomeKind,
+ PushOutboxTargetReceipt, SYNC_PROJECTION_REFRESH_DEFAULT_LIMIT,
+ SYNC_PROJECTION_REFRESH_MAX_LIMIT, SdkRelayAuthPolicy, SyncEventStoreStatus, SyncOutboxStatus,
+ SyncProjectionRefreshReceipt, SyncProjectionRefreshRequest, SyncStatusReceipt,
+ SyncStatusRequest, SyncStatusSource, SyncTransportProfileSummary,
};
#[cfg(feature = "runtime")]
pub use crate::trade_storage::{
diff --git a/crates/sdk/src/listings_runtime.rs b/crates/sdk/src/listings_runtime.rs
@@ -68,7 +68,7 @@ pub struct ListingEnqueuePublishRequest {
#[serde(serialize_with = "crate::actor_json::serialize_actor_context")]
pub actor: RadrootsActorContext,
pub document: RadrootsListingDraftDocumentV1,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub idempotency_key: Option<SdkIdempotencyKey>,
pub created_at: Option<RadrootsSdkTimestamp>,
}
@@ -78,39 +78,39 @@ impl ListingEnqueuePublishRequest {
pub fn new(
actor: RadrootsActorContext,
listing: RadrootsListing,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
) -> Self {
Self::from_document(
actor,
RadrootsListingDraftDocumentV1::new(listing),
- target_relays,
+ target_policy,
)
}
pub fn from_document(
actor: RadrootsActorContext,
document: RadrootsListingDraftDocumentV1,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
) -> Self {
Self {
actor,
document,
- target_relays,
+ target_policy,
idempotency_key: None,
created_at: None,
}
}
- pub fn try_with_target_relays<I, S>(
+ pub fn try_with_nostr_targets<I, S>(
mut self,
- target_relays: I,
+ target_policy: I,
policy: NostrRelayUrlPolicy,
) -> Result<Self, RadrootsSdkError>
where
I: IntoIterator<Item = S>,
S: AsRef<str>,
{
- self.target_relays = TargetPolicy::try_nostr_relays(target_relays, policy)?;
+ self.target_policy = TargetPolicy::try_nostr_relays(target_policy, policy)?;
Ok(self)
}
@@ -194,7 +194,7 @@ impl<'sdk> ListingsClient<'sdk> {
let ListingEnqueuePublishRequest {
actor,
document,
- target_relays,
+ target_policy,
idempotency_key,
created_at,
} = request;
@@ -204,7 +204,7 @@ impl<'sdk> ListingsClient<'sdk> {
created_at,
};
let plan = self.prepare_publish(prepare_request)?;
- self.enqueue_prepared_publish(&actor, plan, target_relays, idempotency_key)
+ self.enqueue_prepared_publish(&actor, plan, target_policy, idempotency_key)
.await
}
@@ -216,7 +216,7 @@ impl<'sdk> ListingsClient<'sdk> {
let ListingEnqueuePublishRequest {
actor,
document,
- target_relays,
+ target_policy,
idempotency_key,
created_at,
} = request;
@@ -229,7 +229,7 @@ impl<'sdk> ListingsClient<'sdk> {
self.enqueue_prepared_publish_with_explicit_signer(
&actor,
plan,
- target_relays,
+ target_policy,
idempotency_key,
signer,
)
@@ -241,7 +241,7 @@ impl<'sdk> ListingsClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: ListingPublishPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
) -> Result<ListingEnqueueReceipt, RadrootsSdkError> {
let enqueue = enqueue_configured_signed_workflow(
@@ -250,7 +250,7 @@ impl<'sdk> ListingsClient<'sdk> {
operation_kind: LISTING_PUBLISH_OPERATION_KIND,
actor,
frozen_draft: &plan.frozen_draft,
- target_relays,
+ target_policy,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key,
},
@@ -263,7 +263,7 @@ impl<'sdk> ListingsClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: ListingPublishPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
signer: &dyn RadrootsEventSigner,
) -> Result<ListingEnqueueReceipt, RadrootsSdkError> {
@@ -273,7 +273,7 @@ impl<'sdk> ListingsClient<'sdk> {
operation_kind: LISTING_PUBLISH_OPERATION_KIND,
actor,
frozen_draft: &plan.frozen_draft,
- target_relays,
+ target_policy,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key,
},
diff --git a/crates/sdk/src/orders_runtime.rs b/crates/sdk/src/orders_runtime.rs
@@ -280,9 +280,9 @@ pub struct TradeSubmitEnqueueRequest {
pub actor: RadrootsActorContext,
pub listing_event: RadrootsNostrEventPtr,
pub order: RadrootsOrderRequest,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub publish_mode: PublishMode,
- pub ack_policy: SatisfactionPolicy,
+ pub satisfaction_policy: SatisfactionPolicy,
pub idempotency_key: Option<SdkIdempotencyKey>,
pub created_at: Option<RadrootsSdkTimestamp>,
}
@@ -294,32 +294,32 @@ impl TradeSubmitEnqueueRequest {
actor: RadrootsActorContext,
listing_event: RadrootsNostrEventPtr,
order: RadrootsOrderRequest,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
) -> Self {
Self {
actor,
listing_event,
order,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key: None,
created_at: None,
}
}
- pub fn try_with_target_relays<I, S>(
+ pub fn try_with_nostr_targets<I, S>(
mut self,
- target_relays: I,
+ target_policy: I,
policy: NostrRelayUrlPolicy,
) -> Result<Self, RadrootsSdkError>
where
I: IntoIterator<Item = S>,
S: AsRef<str>,
{
- self.target_relays = TargetPolicy::try_nostr_relays(target_relays, policy)?;
+ self.target_policy = TargetPolicy::try_nostr_relays(target_policy, policy)?;
Ok(self)
}
@@ -486,9 +486,9 @@ pub struct TradeDecisionEnqueueRequest {
pub actor: RadrootsActorContext,
pub request_event: RadrootsNostrEventPtr,
pub decision: RadrootsOrderDecision,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub publish_mode: PublishMode,
- pub ack_policy: SatisfactionPolicy,
+ pub satisfaction_policy: SatisfactionPolicy,
pub idempotency_key: Option<SdkIdempotencyKey>,
pub created_at: Option<RadrootsSdkTimestamp>,
}
@@ -500,32 +500,32 @@ impl TradeDecisionEnqueueRequest {
actor: RadrootsActorContext,
request_event: RadrootsNostrEventPtr,
decision: RadrootsOrderDecision,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
) -> Self {
Self {
actor,
request_event,
decision,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key: None,
created_at: None,
}
}
- pub fn try_with_target_relays<I, S>(
+ pub fn try_with_nostr_targets<I, S>(
mut self,
- target_relays: I,
+ target_policy: I,
policy: NostrRelayUrlPolicy,
) -> Result<Self, RadrootsSdkError>
where
I: IntoIterator<Item = S>,
S: AsRef<str>,
{
- self.target_relays = TargetPolicy::try_nostr_relays(target_relays, policy)?;
+ self.target_policy = TargetPolicy::try_nostr_relays(target_policy, policy)?;
Ok(self)
}
@@ -627,9 +627,9 @@ pub struct TradeRevisionProposalEnqueueRequest {
pub root_event: RadrootsNostrEventPtr,
pub previous_event: RadrootsNostrEventPtr,
pub proposal: RadrootsOrderRevisionProposal,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub publish_mode: PublishMode,
- pub ack_policy: SatisfactionPolicy,
+ pub satisfaction_policy: SatisfactionPolicy,
pub idempotency_key: Option<SdkIdempotencyKey>,
pub created_at: Option<RadrootsSdkTimestamp>,
}
@@ -642,33 +642,33 @@ impl TradeRevisionProposalEnqueueRequest {
root_event: RadrootsNostrEventPtr,
previous_event: RadrootsNostrEventPtr,
proposal: RadrootsOrderRevisionProposal,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
) -> Self {
Self {
actor,
root_event,
previous_event,
proposal,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key: None,
created_at: None,
}
}
- pub fn try_with_target_relays<I, S>(
+ pub fn try_with_nostr_targets<I, S>(
mut self,
- target_relays: I,
+ target_policy: I,
policy: NostrRelayUrlPolicy,
) -> Result<Self, RadrootsSdkError>
where
I: IntoIterator<Item = S>,
S: AsRef<str>,
{
- self.target_relays = TargetPolicy::try_nostr_relays(target_relays, policy)?;
+ self.target_policy = TargetPolicy::try_nostr_relays(target_policy, policy)?;
Ok(self)
}
@@ -772,9 +772,9 @@ pub struct TradeRevisionDecisionEnqueueRequest {
pub root_event: RadrootsNostrEventPtr,
pub previous_event: RadrootsNostrEventPtr,
pub decision: RadrootsOrderRevisionDecision,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub publish_mode: PublishMode,
- pub ack_policy: SatisfactionPolicy,
+ pub satisfaction_policy: SatisfactionPolicy,
pub idempotency_key: Option<SdkIdempotencyKey>,
pub created_at: Option<RadrootsSdkTimestamp>,
}
@@ -787,33 +787,33 @@ impl TradeRevisionDecisionEnqueueRequest {
root_event: RadrootsNostrEventPtr,
previous_event: RadrootsNostrEventPtr,
decision: RadrootsOrderRevisionDecision,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
) -> Self {
Self {
actor,
root_event,
previous_event,
decision,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key: None,
created_at: None,
}
}
- pub fn try_with_target_relays<I, S>(
+ pub fn try_with_nostr_targets<I, S>(
mut self,
- target_relays: I,
+ target_policy: I,
policy: NostrRelayUrlPolicy,
) -> Result<Self, RadrootsSdkError>
where
I: IntoIterator<Item = S>,
S: AsRef<str>,
{
- self.target_relays = TargetPolicy::try_nostr_relays(target_relays, policy)?;
+ self.target_policy = TargetPolicy::try_nostr_relays(target_policy, policy)?;
Ok(self)
}
@@ -917,9 +917,9 @@ pub struct TradeCancellationEnqueueRequest {
pub root_event: RadrootsNostrEventPtr,
pub previous_event: RadrootsNostrEventPtr,
pub cancellation: RadrootsOrderCancellation,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub publish_mode: PublishMode,
- pub ack_policy: SatisfactionPolicy,
+ pub satisfaction_policy: SatisfactionPolicy,
pub idempotency_key: Option<SdkIdempotencyKey>,
pub created_at: Option<RadrootsSdkTimestamp>,
}
@@ -932,33 +932,33 @@ impl TradeCancellationEnqueueRequest {
root_event: RadrootsNostrEventPtr,
previous_event: RadrootsNostrEventPtr,
cancellation: RadrootsOrderCancellation,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
) -> Self {
Self {
actor,
root_event,
previous_event,
cancellation,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key: None,
created_at: None,
}
}
- pub fn try_with_target_relays<I, S>(
+ pub fn try_with_nostr_targets<I, S>(
mut self,
- target_relays: I,
+ target_policy: I,
policy: NostrRelayUrlPolicy,
) -> Result<Self, RadrootsSdkError>
where
I: IntoIterator<Item = S>,
S: AsRef<str>,
{
- self.target_relays = TargetPolicy::try_nostr_relays(target_relays, policy)?;
+ self.target_policy = TargetPolicy::try_nostr_relays(target_policy, policy)?;
Ok(self)
}
@@ -1068,9 +1068,9 @@ pub struct TradeProposeRequest {
pub items: Vec<RadrootsOrderItem>,
pub economics: RadrootsOrderEconomics,
pub public_note: Option<String>,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub publish_mode: PublishMode,
- pub ack_policy: SatisfactionPolicy,
+ pub satisfaction_policy: SatisfactionPolicy,
pub privacy_confirmation: PrivacyPreflightConfirmation,
pub idempotency_key: Option<SdkIdempotencyKey>,
pub created_at: Option<RadrootsSdkTimestamp>,
@@ -1086,9 +1086,9 @@ impl TradeProposeRequest {
seller_pubkey: RadrootsPublicKey,
items: Vec<RadrootsOrderItem>,
economics: RadrootsOrderEconomics,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
) -> Self {
Self {
actor,
@@ -1099,9 +1099,9 @@ impl TradeProposeRequest {
items,
economics,
public_note: None,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
privacy_confirmation: PrivacyPreflightConfirmation::new(),
idempotency_key: None,
created_at: None,
@@ -1148,9 +1148,9 @@ pub struct TradeAcceptRequest {
pub actor: RadrootsActorContext,
pub locator: RadrootsTradeLocator,
pub inventory_commitments: Vec<RadrootsOrderInventoryCommitment>,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub publish_mode: PublishMode,
- pub ack_policy: SatisfactionPolicy,
+ pub satisfaction_policy: SatisfactionPolicy,
pub evidence_mode: TradeEvidenceMode,
pub privacy_confirmation: PrivacyPreflightConfirmation,
pub idempotency_key: Option<SdkIdempotencyKey>,
@@ -1163,18 +1163,18 @@ impl TradeAcceptRequest {
actor: RadrootsActorContext,
locator: RadrootsTradeLocator,
inventory_commitments: Vec<RadrootsOrderInventoryCommitment>,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
evidence_mode: TradeEvidenceMode,
) -> Self {
Self {
actor,
locator,
inventory_commitments,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
evidence_mode,
privacy_confirmation: PrivacyPreflightConfirmation::new(),
idempotency_key: None,
@@ -1212,9 +1212,9 @@ pub struct TradeDeclineRequest {
pub actor: RadrootsActorContext,
pub locator: RadrootsTradeLocator,
pub reason: String,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub publish_mode: PublishMode,
- pub ack_policy: SatisfactionPolicy,
+ pub satisfaction_policy: SatisfactionPolicy,
pub evidence_mode: TradeEvidenceMode,
pub privacy_confirmation: PrivacyPreflightConfirmation,
pub idempotency_key: Option<SdkIdempotencyKey>,
@@ -1227,18 +1227,18 @@ impl TradeDeclineRequest {
actor: RadrootsActorContext,
locator: RadrootsTradeLocator,
reason: impl Into<String>,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
evidence_mode: TradeEvidenceMode,
) -> Self {
Self {
actor,
locator,
reason: reason.into(),
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
evidence_mode,
privacy_confirmation: PrivacyPreflightConfirmation::new(),
idempotency_key: None,
@@ -1276,9 +1276,9 @@ pub struct TradeCancelRequest {
pub actor: RadrootsActorContext,
pub locator: RadrootsTradeLocator,
pub reason: String,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub publish_mode: PublishMode,
- pub ack_policy: SatisfactionPolicy,
+ pub satisfaction_policy: SatisfactionPolicy,
pub evidence_mode: TradeEvidenceMode,
pub privacy_confirmation: PrivacyPreflightConfirmation,
pub idempotency_key: Option<SdkIdempotencyKey>,
@@ -1291,18 +1291,18 @@ impl TradeCancelRequest {
actor: RadrootsActorContext,
locator: RadrootsTradeLocator,
reason: impl Into<String>,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
evidence_mode: TradeEvidenceMode,
) -> Self {
Self {
actor,
locator,
reason: reason.into(),
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
evidence_mode,
privacy_confirmation: PrivacyPreflightConfirmation::new(),
idempotency_key: None,
@@ -1343,9 +1343,9 @@ pub struct TradeRevisionProposalRequest {
pub items: Vec<RadrootsOrderItem>,
pub economics: RadrootsOrderEconomics,
pub reason: String,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub publish_mode: PublishMode,
- pub ack_policy: SatisfactionPolicy,
+ pub satisfaction_policy: SatisfactionPolicy,
pub evidence_mode: TradeEvidenceMode,
pub privacy_confirmation: PrivacyPreflightConfirmation,
pub idempotency_key: Option<SdkIdempotencyKey>,
@@ -1361,9 +1361,9 @@ impl TradeRevisionProposalRequest {
items: Vec<RadrootsOrderItem>,
economics: RadrootsOrderEconomics,
reason: impl Into<String>,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
evidence_mode: TradeEvidenceMode,
) -> Self {
Self {
@@ -1373,9 +1373,9 @@ impl TradeRevisionProposalRequest {
items,
economics,
reason: reason.into(),
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
evidence_mode,
privacy_confirmation: PrivacyPreflightConfirmation::new(),
idempotency_key: None,
@@ -1414,9 +1414,9 @@ pub struct TradeRevisionDecisionRequest {
pub locator: RadrootsTradeLocator,
pub revision_id: RadrootsOrderRevisionId,
pub decision: RadrootsOrderRevisionOutcome,
- pub target_relays: TargetPolicy,
+ pub target_policy: TargetPolicy,
pub publish_mode: PublishMode,
- pub ack_policy: SatisfactionPolicy,
+ pub satisfaction_policy: SatisfactionPolicy,
pub evidence_mode: TradeEvidenceMode,
pub privacy_confirmation: PrivacyPreflightConfirmation,
pub idempotency_key: Option<SdkIdempotencyKey>,
@@ -1430,9 +1430,9 @@ impl TradeRevisionDecisionRequest {
locator: RadrootsTradeLocator,
revision_id: RadrootsOrderRevisionId,
decision: RadrootsOrderRevisionOutcome,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
evidence_mode: TradeEvidenceMode,
) -> Self {
Self {
@@ -1440,9 +1440,9 @@ impl TradeRevisionDecisionRequest {
locator,
revision_id,
decision,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
evidence_mode,
privacy_confirmation: PrivacyPreflightConfirmation::new(),
idempotency_key: None,
@@ -2572,13 +2572,13 @@ impl<'sdk> TradesClient<'sdk> {
actor,
listing_event,
order,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
created_at,
} = request;
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let prepare_request = TradeSubmitPrepareRequest {
actor: actor.clone(),
listing_event,
@@ -2589,9 +2589,9 @@ impl<'sdk> TradesClient<'sdk> {
self.enqueue_prepared_submit(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await
@@ -2607,13 +2607,13 @@ impl<'sdk> TradesClient<'sdk> {
actor,
listing_event,
order,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
created_at,
} = request;
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let prepare_request = TradeSubmitPrepareRequest {
actor: actor.clone(),
listing_event,
@@ -2624,9 +2624,9 @@ impl<'sdk> TradesClient<'sdk> {
self.enqueue_prepared_submit_with_explicit_signer(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
signer,
)
@@ -2638,20 +2638,20 @@ impl<'sdk> TradesClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: TradeSubmitPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
) -> Result<TradeSubmitReceipt, RadrootsSdkError> {
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let enqueue = enqueue_configured_signed_workflow(
self.sdk,
SdkWorkflowEnqueueRequest {
operation_kind: TradeWorkflowKind::Submit.operation_kind(),
actor,
frozen_draft: &plan.frozen_draft,
- target_relays: target_relays.workflow_target_policy(),
- satisfaction_policy: ack_policy,
+ target_policy: target_policy.workflow_target_policy(),
+ satisfaction_policy: satisfaction_policy,
idempotency_key,
},
)
@@ -2664,21 +2664,21 @@ impl<'sdk> TradesClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: TradeSubmitPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
signer: &dyn RadrootsEventSigner,
) -> Result<TradeSubmitReceipt, RadrootsSdkError> {
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let enqueue = enqueue_signed_workflow(
self.sdk,
SdkWorkflowEnqueueRequest {
operation_kind: TradeWorkflowKind::Submit.operation_kind(),
actor,
frozen_draft: &plan.frozen_draft,
- target_relays: target_relays.workflow_target_policy(),
- satisfaction_policy: ack_policy,
+ target_policy: target_policy.workflow_target_policy(),
+ satisfaction_policy: satisfaction_policy,
idempotency_key,
},
signer,
@@ -2711,13 +2711,13 @@ impl<'sdk> TradesClient<'sdk> {
actor,
request_event,
decision,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
created_at,
} = request;
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let prepare_request = TradeDecisionPrepareRequest {
actor: actor.clone(),
request_event,
@@ -2728,9 +2728,9 @@ impl<'sdk> TradesClient<'sdk> {
self.enqueue_prepared_decision(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await
@@ -2746,13 +2746,13 @@ impl<'sdk> TradesClient<'sdk> {
actor,
request_event,
decision,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
created_at,
} = request;
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let prepare_request = TradeDecisionPrepareRequest {
actor: actor.clone(),
request_event,
@@ -2763,9 +2763,9 @@ impl<'sdk> TradesClient<'sdk> {
self.enqueue_prepared_decision_with_explicit_signer(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
signer,
)
@@ -2777,12 +2777,12 @@ impl<'sdk> TradesClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: TradeDecisionPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
) -> Result<TradeDecisionReceipt, RadrootsSdkError> {
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
if !self
.prepared_order_event_exists(&plan.expected_event_id)
.await?
@@ -2795,8 +2795,8 @@ impl<'sdk> TradesClient<'sdk> {
operation_kind: TradeWorkflowKind::Decision.operation_kind(),
actor,
frozen_draft: &plan.frozen_draft,
- target_relays: target_relays.workflow_target_policy(),
- satisfaction_policy: ack_policy,
+ target_policy: target_policy.workflow_target_policy(),
+ satisfaction_policy: satisfaction_policy,
idempotency_key,
},
)
@@ -2809,13 +2809,13 @@ impl<'sdk> TradesClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: TradeDecisionPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
signer: &dyn RadrootsEventSigner,
) -> Result<TradeDecisionReceipt, RadrootsSdkError> {
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
if !self
.prepared_order_event_exists(&plan.expected_event_id)
.await?
@@ -2828,8 +2828,8 @@ impl<'sdk> TradesClient<'sdk> {
operation_kind: TradeWorkflowKind::Decision.operation_kind(),
actor,
frozen_draft: &plan.frozen_draft,
- target_relays: target_relays.workflow_target_policy(),
- satisfaction_policy: ack_policy,
+ target_policy: target_policy.workflow_target_policy(),
+ satisfaction_policy: satisfaction_policy,
idempotency_key,
},
signer,
@@ -2864,13 +2864,13 @@ impl<'sdk> TradesClient<'sdk> {
root_event,
previous_event,
proposal,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
created_at,
} = request;
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let prepare_request = TradeRevisionProposalPrepareRequest {
actor: actor.clone(),
root_event,
@@ -2882,9 +2882,9 @@ impl<'sdk> TradesClient<'sdk> {
self.enqueue_prepared_revision_proposal(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await
@@ -2901,13 +2901,13 @@ impl<'sdk> TradesClient<'sdk> {
root_event,
previous_event,
proposal,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
created_at,
} = request;
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let prepare_request = TradeRevisionProposalPrepareRequest {
actor: actor.clone(),
root_event,
@@ -2919,9 +2919,9 @@ impl<'sdk> TradesClient<'sdk> {
self.enqueue_prepared_revision_proposal_with_explicit_signer(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
signer,
)
@@ -2933,12 +2933,12 @@ impl<'sdk> TradesClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: TradeRevisionProposalPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
) -> Result<TradeRevisionProposalReceipt, RadrootsSdkError> {
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
if !self
.prepared_order_event_exists(&plan.expected_event_id)
.await?
@@ -2951,8 +2951,8 @@ impl<'sdk> TradesClient<'sdk> {
operation_kind: TradeWorkflowKind::RevisionProposal.operation_kind(),
actor,
frozen_draft: &plan.frozen_draft,
- target_relays: target_relays.workflow_target_policy(),
- satisfaction_policy: ack_policy,
+ target_policy: target_policy.workflow_target_policy(),
+ satisfaction_policy: satisfaction_policy,
idempotency_key,
},
)
@@ -2965,13 +2965,13 @@ impl<'sdk> TradesClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: TradeRevisionProposalPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
signer: &dyn RadrootsEventSigner,
) -> Result<TradeRevisionProposalReceipt, RadrootsSdkError> {
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
if !self
.prepared_order_event_exists(&plan.expected_event_id)
.await?
@@ -2984,8 +2984,8 @@ impl<'sdk> TradesClient<'sdk> {
operation_kind: TradeWorkflowKind::RevisionProposal.operation_kind(),
actor,
frozen_draft: &plan.frozen_draft,
- target_relays: target_relays.workflow_target_policy(),
- satisfaction_policy: ack_policy,
+ target_policy: target_policy.workflow_target_policy(),
+ satisfaction_policy: satisfaction_policy,
idempotency_key,
},
signer,
@@ -3020,13 +3020,13 @@ impl<'sdk> TradesClient<'sdk> {
root_event,
previous_event,
decision,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
created_at,
} = request;
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let prepare_request = TradeRevisionDecisionPrepareRequest {
actor: actor.clone(),
root_event,
@@ -3038,9 +3038,9 @@ impl<'sdk> TradesClient<'sdk> {
self.enqueue_prepared_revision_decision(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await
@@ -3057,13 +3057,13 @@ impl<'sdk> TradesClient<'sdk> {
root_event,
previous_event,
decision,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
created_at,
} = request;
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let prepare_request = TradeRevisionDecisionPrepareRequest {
actor: actor.clone(),
root_event,
@@ -3075,9 +3075,9 @@ impl<'sdk> TradesClient<'sdk> {
self.enqueue_prepared_revision_decision_with_explicit_signer(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
signer,
)
@@ -3089,12 +3089,12 @@ impl<'sdk> TradesClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: TradeRevisionDecisionPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
) -> Result<TradeRevisionDecisionReceipt, RadrootsSdkError> {
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
if !self
.prepared_order_event_exists(&plan.expected_event_id)
.await?
@@ -3107,8 +3107,8 @@ impl<'sdk> TradesClient<'sdk> {
operation_kind: TradeWorkflowKind::RevisionDecision.operation_kind(),
actor,
frozen_draft: &plan.frozen_draft,
- target_relays: target_relays.workflow_target_policy(),
- satisfaction_policy: ack_policy,
+ target_policy: target_policy.workflow_target_policy(),
+ satisfaction_policy: satisfaction_policy,
idempotency_key,
},
)
@@ -3121,13 +3121,13 @@ impl<'sdk> TradesClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: TradeRevisionDecisionPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
signer: &dyn RadrootsEventSigner,
) -> Result<TradeRevisionDecisionReceipt, RadrootsSdkError> {
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
if !self
.prepared_order_event_exists(&plan.expected_event_id)
.await?
@@ -3140,8 +3140,8 @@ impl<'sdk> TradesClient<'sdk> {
operation_kind: TradeWorkflowKind::RevisionDecision.operation_kind(),
actor,
frozen_draft: &plan.frozen_draft,
- target_relays: target_relays.workflow_target_policy(),
- satisfaction_policy: ack_policy,
+ target_policy: target_policy.workflow_target_policy(),
+ satisfaction_policy: satisfaction_policy,
idempotency_key,
},
signer,
@@ -3176,13 +3176,13 @@ impl<'sdk> TradesClient<'sdk> {
root_event,
previous_event,
cancellation,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
created_at,
} = request;
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let prepare_request = TradeCancellationPrepareRequest {
actor: actor.clone(),
root_event,
@@ -3194,9 +3194,9 @@ impl<'sdk> TradesClient<'sdk> {
self.enqueue_prepared_cancellation(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await
@@ -3213,13 +3213,13 @@ impl<'sdk> TradesClient<'sdk> {
root_event,
previous_event,
cancellation,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
created_at,
} = request;
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
let prepare_request = TradeCancellationPrepareRequest {
actor: actor.clone(),
root_event,
@@ -3231,9 +3231,9 @@ impl<'sdk> TradesClient<'sdk> {
self.enqueue_prepared_cancellation_with_explicit_signer(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
signer,
)
@@ -3245,12 +3245,12 @@ impl<'sdk> TradesClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: TradeCancellationPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
) -> Result<TradeCancellationReceipt, RadrootsSdkError> {
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
if !self
.prepared_order_event_exists(&plan.expected_event_id)
.await?
@@ -3263,8 +3263,8 @@ impl<'sdk> TradesClient<'sdk> {
operation_kind: TradeWorkflowKind::Cancellation.operation_kind(),
actor,
frozen_draft: &plan.frozen_draft,
- target_relays: target_relays.workflow_target_policy(),
- satisfaction_policy: ack_policy,
+ target_policy: target_policy.workflow_target_policy(),
+ satisfaction_policy: satisfaction_policy,
idempotency_key,
},
)
@@ -3277,13 +3277,13 @@ impl<'sdk> TradesClient<'sdk> {
&self,
actor: &RadrootsActorContext,
plan: TradeCancellationPlan,
- target_relays: TargetPolicy,
+ target_policy: TargetPolicy,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
idempotency_key: Option<SdkIdempotencyKey>,
signer: &dyn RadrootsEventSigner,
) -> Result<TradeCancellationReceipt, RadrootsSdkError> {
- validate_trade_enqueue_policy(publish_mode, ack_policy)?;
+ validate_trade_enqueue_policy(publish_mode, satisfaction_policy)?;
if !self
.prepared_order_event_exists(&plan.expected_event_id)
.await?
@@ -3296,8 +3296,8 @@ impl<'sdk> TradesClient<'sdk> {
operation_kind: TradeWorkflowKind::Cancellation.operation_kind(),
actor,
frozen_draft: &plan.frozen_draft,
- target_relays: target_relays.workflow_target_policy(),
- satisfaction_policy: ack_policy,
+ target_policy: target_policy.workflow_target_policy(),
+ satisfaction_policy: satisfaction_policy,
idempotency_key,
},
signer,
@@ -3618,14 +3618,14 @@ where
{
let relay_targets = sdk.configured_nostr_relay_urls().to_vec();
if relay_targets.is_empty() {
- return Err(RadrootsSdkError::empty_target_relays(operation));
+ return Err(RadrootsSdkError::empty_transport_targets(operation));
}
let query_plan = trade_evidence_query_plan(locator, limit)?;
let fetch_request = trade_evidence_fetch_request(sdk, &query_plan, &relay_targets)?;
let fetch_receipt =
fetch_and_ingest_relay_events(adapter, &sdk._event_store, fetch_request).await?;
if trade_resync_total_relay_failure(&fetch_receipt, relay_targets.len()) {
- return Err(RadrootsSdkError::ProductSyncRelaySetupFailure {
+ return Err(RadrootsSdkError::ProductSyncTransportSetupFailure {
message: trade_resync_total_failure_message(operation, &fetch_receipt),
});
}
@@ -4300,7 +4300,7 @@ fn validation_receipt_relay_targets(
) -> Result<Vec<String>, RadrootsSdkError> {
let relay_targets = sdk.configured_nostr_relay_urls().to_vec();
if relay_targets.is_empty() {
- return Err(RadrootsSdkError::empty_target_relays(operation));
+ return Err(RadrootsSdkError::empty_transport_targets(operation));
}
Ok(relay_targets)
}
@@ -5292,7 +5292,7 @@ impl<'sdk> TradeBuyerClient<'sdk> {
&self,
request: TradeProposeRequest,
) -> Result<TradeMutationOutcome<TradeSubmitPlan, TradeSubmitReceipt>, RadrootsSdkError> {
- validate_trade_product_publish_policy(request.publish_mode, request.ack_policy)?;
+ validate_trade_product_publish_policy(request.publish_mode, request.satisfaction_policy)?;
require_trade_product_privacy_preflight(
"trade.propose",
trade_propose_privacy_fields(&request),
@@ -5307,9 +5307,9 @@ impl<'sdk> TradeBuyerClient<'sdk> {
items,
economics,
public_note: _,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
privacy_confirmation: _,
idempotency_key,
created_at,
@@ -5336,16 +5336,16 @@ impl<'sdk> TradeBuyerClient<'sdk> {
.enqueue_prepared_submit(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await?;
trade_product_post_enqueue_outcome(
self.sdk,
publish_mode,
- ack_policy,
+ satisfaction_policy,
receipt.outbox_event_id,
receipt,
)
@@ -5359,14 +5359,14 @@ impl<'sdk> TradeBuyerClient<'sdk> {
TradeMutationOutcome<TradeCancellationPlan, TradeCancellationReceipt>,
RadrootsSdkError,
> {
- validate_trade_product_publish_policy(request.publish_mode, request.ack_policy)?;
+ validate_trade_product_publish_policy(request.publish_mode, request.satisfaction_policy)?;
let TradeCancelRequest {
actor,
locator,
reason,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
evidence_mode,
privacy_confirmation,
idempotency_key,
@@ -5401,16 +5401,16 @@ impl<'sdk> TradeBuyerClient<'sdk> {
.enqueue_prepared_cancellation(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await?;
trade_product_post_enqueue_outcome(
self.sdk,
publish_mode,
- ack_policy,
+ satisfaction_policy,
receipt.outbox_event_id,
receipt,
)
@@ -5445,15 +5445,15 @@ impl<'sdk> TradeBuyerClient<'sdk> {
TradeMutationOutcome<TradeRevisionDecisionPlan, TradeRevisionDecisionReceipt>,
RadrootsSdkError,
> {
- validate_trade_product_publish_policy(request.publish_mode, request.ack_policy)?;
+ validate_trade_product_publish_policy(request.publish_mode, request.satisfaction_policy)?;
let TradeRevisionDecisionRequest {
actor,
locator,
revision_id,
decision,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
evidence_mode,
privacy_confirmation,
idempotency_key,
@@ -5497,16 +5497,16 @@ impl<'sdk> TradeBuyerClient<'sdk> {
.enqueue_prepared_revision_decision(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await?;
trade_product_post_enqueue_outcome(
self.sdk,
publish_mode,
- ack_policy,
+ satisfaction_policy,
receipt.outbox_event_id,
receipt,
)
@@ -5594,14 +5594,14 @@ impl<'sdk> TradeSellerClient<'sdk> {
request: TradeAcceptRequest,
) -> Result<TradeMutationOutcome<TradeDecisionPlan, TradeDecisionReceipt>, RadrootsSdkError>
{
- validate_trade_product_publish_policy(request.publish_mode, request.ack_policy)?;
+ validate_trade_product_publish_policy(request.publish_mode, request.satisfaction_policy)?;
let TradeAcceptRequest {
actor,
locator,
inventory_commitments,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
evidence_mode,
privacy_confirmation,
idempotency_key,
@@ -5637,16 +5637,16 @@ impl<'sdk> TradeSellerClient<'sdk> {
.enqueue_prepared_decision(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await?;
trade_product_post_enqueue_outcome(
self.sdk,
publish_mode,
- ack_policy,
+ satisfaction_policy,
receipt.outbox_event_id,
receipt,
)
@@ -5662,14 +5662,14 @@ impl<'sdk> TradeSellerClient<'sdk> {
where
A: RadrootsRelayFetchAdapter,
{
- validate_trade_product_publish_policy(request.publish_mode, request.ack_policy)?;
+ validate_trade_product_publish_policy(request.publish_mode, request.satisfaction_policy)?;
let TradeAcceptRequest {
actor,
locator,
inventory_commitments,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
evidence_mode,
privacy_confirmation,
idempotency_key,
@@ -5711,16 +5711,16 @@ impl<'sdk> TradeSellerClient<'sdk> {
.enqueue_prepared_decision(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await?;
trade_product_post_enqueue_outcome(
self.sdk,
publish_mode,
- ack_policy,
+ satisfaction_policy,
receipt.outbox_event_id,
receipt,
)
@@ -5733,14 +5733,14 @@ impl<'sdk> TradeSellerClient<'sdk> {
request: TradeDeclineRequest,
) -> Result<TradeMutationOutcome<TradeDecisionPlan, TradeDecisionReceipt>, RadrootsSdkError>
{
- validate_trade_product_publish_policy(request.publish_mode, request.ack_policy)?;
+ validate_trade_product_publish_policy(request.publish_mode, request.satisfaction_policy)?;
let TradeDeclineRequest {
actor,
locator,
reason,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
evidence_mode,
privacy_confirmation,
idempotency_key,
@@ -5774,16 +5774,16 @@ impl<'sdk> TradeSellerClient<'sdk> {
.enqueue_prepared_decision(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await?;
trade_product_post_enqueue_outcome(
self.sdk,
publish_mode,
- ack_policy,
+ satisfaction_policy,
receipt.outbox_event_id,
receipt,
)
@@ -5798,7 +5798,7 @@ impl<'sdk> TradeSellerClient<'sdk> {
TradeMutationOutcome<TradeRevisionProposalPlan, TradeRevisionProposalReceipt>,
RadrootsSdkError,
> {
- validate_trade_product_publish_policy(request.publish_mode, request.ack_policy)?;
+ validate_trade_product_publish_policy(request.publish_mode, request.satisfaction_policy)?;
let TradeRevisionProposalRequest {
actor,
locator,
@@ -5806,9 +5806,9 @@ impl<'sdk> TradeSellerClient<'sdk> {
items,
economics,
reason,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
evidence_mode,
privacy_confirmation,
idempotency_key,
@@ -5849,16 +5849,16 @@ impl<'sdk> TradeSellerClient<'sdk> {
.enqueue_prepared_revision_proposal(
&actor,
plan,
- target_relays,
+ target_policy,
publish_mode,
- ack_policy,
+ satisfaction_policy,
idempotency_key,
)
.await?;
trade_product_post_enqueue_outcome(
self.sdk,
publish_mode,
- ack_policy,
+ satisfaction_policy,
receipt.outbox_event_id,
receipt,
)
@@ -6120,7 +6120,7 @@ fn event_ptr(event_id: &RadrootsEventId) -> RadrootsNostrEventPtr {
async fn trade_product_post_enqueue_outcome<Plan, Receipt>(
sdk: &crate::RadrootsClient,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
outbox_event_id: i64,
receipt: Receipt,
) -> Result<TradeMutationOutcome<Plan, Receipt>, RadrootsSdkError> {
@@ -6132,7 +6132,10 @@ async fn trade_product_post_enqueue_outcome<Plan, Receipt>(
PublishMode::EnqueueAndPublish => {
let publish = sdk
.sync()
- .push_outbox(push_request_for_ack_policy(ack_policy, outbox_event_id)?)
+ .push_outbox(push_request_for_satisfaction_policy(
+ satisfaction_policy,
+ outbox_event_id,
+ )?)
.await?;
Ok(TradeMutationOutcome::Published { receipt, publish })
}
@@ -6140,40 +6143,39 @@ async fn trade_product_post_enqueue_outcome<Plan, Receipt>(
}
#[cfg(feature = "signer-adapters")]
-fn push_request_for_ack_policy(
- ack_policy: SatisfactionPolicy,
+fn push_request_for_satisfaction_policy(
+ satisfaction_policy: SatisfactionPolicy,
outbox_event_id: i64,
) -> Result<PushOutboxRequest, RadrootsSdkError> {
let request = PushOutboxRequest::new().with_outbox_event_id(outbox_event_id);
- match ack_policy {
+ match satisfaction_policy {
SatisfactionPolicy::NoWait => Err(RadrootsSdkError::InvalidRequest {
- message: "trade enqueue-and-publish requires a relay acknowledgement policy".to_owned(),
+ message: "trade enqueue-and-publish requires a transport satisfaction policy"
+ .to_owned(),
}),
- SatisfactionPolicy::AtLeastOneTarget => Ok(request.with_accepted_quorum(1)),
- SatisfactionPolicy::AllTargets => Ok(request),
- SatisfactionPolicy::AtLeast { required } => {
- Ok(request.with_accepted_quorum(usize::from(required)))
- }
+ SatisfactionPolicy::AtLeastOneTarget
+ | SatisfactionPolicy::AllTargets
+ | SatisfactionPolicy::AtLeast { .. } => Ok(request),
}
}
#[cfg(feature = "signer-adapters")]
fn validate_trade_product_publish_policy(
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
) -> Result<(), RadrootsSdkError> {
match publish_mode {
PublishMode::DryRun | PublishMode::EnqueueOnly
- if ack_policy != SatisfactionPolicy::NoWait =>
+ if satisfaction_policy != SatisfactionPolicy::NoWait =>
{
Err(RadrootsSdkError::InvalidRequest {
- message: "trade dry-run and enqueue-only modes require no-wait acknowledgement"
+ message: "trade dry-run and enqueue-only modes require no-wait satisfaction"
.to_owned(),
})
}
- PublishMode::EnqueueAndPublish if ack_policy == SatisfactionPolicy::NoWait => {
+ PublishMode::EnqueueAndPublish if satisfaction_policy == SatisfactionPolicy::NoWait => {
Err(RadrootsSdkError::InvalidRequest {
- message: "trade enqueue-and-publish requires a relay acknowledgement policy"
+ message: "trade enqueue-and-publish requires a transport satisfaction policy"
.to_owned(),
})
}
@@ -6277,22 +6279,26 @@ fn trade_reason_contains_private_coordination(reason: &str) -> bool {
#[cfg(any(feature = "signer-adapters", test))]
fn validate_trade_enqueue_policy(
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
) -> Result<(), RadrootsSdkError> {
if publish_mode == PublishMode::DryRun {
return Err(RadrootsSdkError::InvalidRequest {
message: "trade dry-run publish mode must use a prepare request".to_owned(),
});
}
- if publish_mode == PublishMode::EnqueueOnly && ack_policy != SatisfactionPolicy::NoWait {
+ if publish_mode == PublishMode::EnqueueOnly && satisfaction_policy != SatisfactionPolicy::NoWait
+ {
return Err(RadrootsSdkError::InvalidRequest {
- message: "trade enqueue-only publish mode only supports no-wait acknowledgement"
+ message: "trade enqueue-only publish mode only supports no-wait satisfaction"
.to_owned(),
});
}
- if publish_mode == PublishMode::EnqueueAndPublish && ack_policy == SatisfactionPolicy::NoWait {
+ if publish_mode == PublishMode::EnqueueAndPublish
+ && satisfaction_policy == SatisfactionPolicy::NoWait
+ {
return Err(RadrootsSdkError::InvalidRequest {
- message: "trade enqueue-and-publish requires a relay acknowledgement policy".to_owned(),
+ message: "trade enqueue-and-publish requires a transport satisfaction policy"
+ .to_owned(),
});
}
Ok(())
diff --git a/crates/sdk/src/runtime.rs b/crates/sdk/src/runtime.rs
@@ -212,7 +212,7 @@ pub struct SdkEventStoreStorageStatus {
pub store: SdkSqliteStoreStatus,
pub total_events: i64,
pub projection_eligible_events: i64,
- pub relay_observations: i64,
+ pub transport_observations: i64,
pub last_event_seq: Option<i64>,
pub last_event_updated_at_ms: Option<i64>,
}
@@ -616,7 +616,7 @@ impl RadrootsClient {
store: event_store_status,
total_events: event_summary.total_events,
projection_eligible_events: event_summary.projection_eligible_events,
- relay_observations: event_summary.transport_observations,
+ transport_observations: event_summary.transport_observations,
last_event_seq: event_summary.last_event_seq,
last_event_updated_at_ms: event_summary.last_event_updated_at_ms,
},
diff --git a/crates/sdk/src/sync_runtime.rs b/crates/sdk/src/sync_runtime.rs
@@ -30,8 +30,10 @@ use radroots_trade::projection::{
RadrootsProjectionRefreshReceipt, RadrootsProjectionRefreshRequest,
refresh_product_projections,
};
+#[cfg(feature = "runtime")]
+use radroots_transport::RadrootsTransportKind;
#[cfg(all(feature = "runtime", feature = "radrootsd-proxy"))]
-use radroots_transport::{RadrootsTransportKind, RadrootsTransportSatisfactionPolicy};
+use radroots_transport::RadrootsTransportSatisfactionPolicy;
#[cfg(all(feature = "runtime", feature = "relay-runtime"))]
use radroots_transport_nostr::RadrootsNostrClientPublishAdapter;
#[cfg(feature = "runtime")]
@@ -75,7 +77,7 @@ pub struct SyncStatusReceipt {
pub observed_at_ms: i64,
pub event_store: SyncEventStoreStatus,
pub outbox: SyncOutboxStatus,
- pub relay_targets: SyncRelayTargetSummary,
+ pub transport_profile: SyncTransportProfileSummary,
}
#[cfg(feature = "runtime")]
@@ -91,7 +93,7 @@ pub enum SyncStatusSource {
pub struct SyncEventStoreStatus {
pub total_events: i64,
pub projection_eligible_events: i64,
- pub relay_observations: i64,
+ pub transport_observations: i64,
pub last_event_seq: Option<i64>,
pub last_event_updated_at_ms: Option<i64>,
}
@@ -102,7 +104,7 @@ impl From<RadrootsEventStoreStatusSummary> for SyncEventStoreStatus {
Self {
total_events: summary.total_events,
projection_eligible_events: summary.projection_eligible_events,
- relay_observations: summary.transport_observations,
+ transport_observations: summary.transport_observations,
last_event_seq: summary.last_event_seq,
last_event_updated_at_ms: summary.last_event_updated_at_ms,
}
@@ -142,9 +144,10 @@ impl From<RadrootsOutboxStatusSummary> for SyncOutboxStatus {
#[cfg(feature = "runtime")]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize)]
-pub struct SyncRelayTargetSummary {
- pub configured_count: usize,
- pub configured_relays: Vec<String>,
+pub struct SyncTransportProfileSummary {
+ pub transport_profile_id: String,
+ pub configured_nostr_relay_count: usize,
+ pub configured_nostr_relays: Vec<String>,
}
#[cfg(feature = "runtime")]
@@ -185,7 +188,7 @@ pub struct SyncProjectionRefreshReceipt {
pub listing_upserts: usize,
pub trade_upserts: usize,
pub validation_receipts: usize,
- pub relay_observations: i64,
+ pub transport_observations: i64,
pub last_event_seq: Option<i64>,
}
@@ -200,7 +203,7 @@ impl SyncProjectionRefreshReceipt {
listing_upserts: receipt.listing_upserts,
trade_upserts: receipt.trade_upserts,
validation_receipts: receipt.validation_receipts,
- relay_observations: receipt.transport_observations,
+ transport_observations: receipt.transport_observations,
last_event_seq: receipt.last_event_seq,
}
}
@@ -227,9 +230,8 @@ impl Default for SdkRelayAuthPolicy {
pub struct PushOutboxRequest {
pub limit: usize,
pub outbox_event_id: Option<i64>,
- pub republish_accepted_relays: bool,
- pub accepted_quorum: Option<usize>,
- pub relay_url_policy: NostrRelayUrlPolicy,
+ pub republish_accepted_targets: bool,
+ pub nostr_relay_url_policy: NostrRelayUrlPolicy,
pub auth_policy: SdkRelayAuthPolicy,
pub claim_ttl_ms: i64,
pub next_attempt_delay_ms: i64,
@@ -241,9 +243,8 @@ impl Default for PushOutboxRequest {
Self {
limit: PUSH_OUTBOX_DEFAULT_LIMIT,
outbox_event_id: None,
- republish_accepted_relays: false,
- accepted_quorum: None,
- relay_url_policy: NostrRelayUrlPolicy::Public,
+ republish_accepted_targets: false,
+ nostr_relay_url_policy: NostrRelayUrlPolicy::Public,
auth_policy: SdkRelayAuthPolicy::DetectOnly,
claim_ttl_ms: PUSH_OUTBOX_DEFAULT_CLAIM_TTL_MS,
next_attempt_delay_ms: PUSH_OUTBOX_DEFAULT_NEXT_ATTEMPT_DELAY_MS,
@@ -268,18 +269,13 @@ impl PushOutboxRequest {
self
}
- pub fn republish_accepted_relays(mut self, enabled: bool) -> Self {
- self.republish_accepted_relays = enabled;
- self
- }
-
- pub fn with_accepted_quorum(mut self, accepted_quorum: usize) -> Self {
- self.accepted_quorum = Some(accepted_quorum);
+ pub fn republish_accepted_targets(mut self, enabled: bool) -> Self {
+ self.republish_accepted_targets = enabled;
self
}
- pub fn with_relay_url_policy(mut self, policy: NostrRelayUrlPolicy) -> Self {
- self.relay_url_policy = policy;
+ pub fn with_nostr_relay_url_policy(mut self, policy: NostrRelayUrlPolicy) -> Self {
+ self.nostr_relay_url_policy = policy;
self
}
@@ -326,11 +322,6 @@ impl PushOutboxRequest {
message: "push_outbox next attempt delay must be positive".to_owned(),
});
}
- if self.accepted_quorum == Some(0) {
- return Err(RadrootsSdkError::InvalidRequest {
- message: "push_outbox accepted quorum must be positive".to_owned(),
- });
- }
Ok(())
}
}
@@ -371,14 +362,15 @@ pub struct PushOutboxEventReceipt {
pub terminal_count: usize,
pub quorum: usize,
pub quorum_met: bool,
- pub relays: Vec<PushOutboxRelayReceipt>,
+ pub targets: Vec<PushOutboxTargetReceipt>,
}
#[cfg(feature = "runtime")]
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize)]
-pub struct PushOutboxRelayReceipt {
- pub relay_url: String,
- pub outcome_kind: PushOutboxRelayOutcomeKind,
+pub struct PushOutboxTargetReceipt {
+ pub transport_kind: String,
+ pub endpoint_uri: String,
+ pub outcome_kind: PushOutboxTargetOutcomeKind,
pub attempted: bool,
pub message: Option<String>,
}
@@ -420,7 +412,7 @@ impl From<RadrootsOutboxEventState> for PushOutboxEventState {
#[derive(Clone, Copy, Debug, PartialEq, Eq, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[non_exhaustive]
-pub enum PushOutboxRelayOutcomeKind {
+pub enum PushOutboxTargetOutcomeKind {
Accepted,
DuplicateAccepted,
Blocked,
@@ -435,13 +427,13 @@ pub enum PushOutboxRelayOutcomeKind {
Error,
Timeout,
ConnectionFailed,
- RelayUrlRejected,
+ TargetUriRejected,
SkippedAlreadyAccepted,
Unknown,
}
#[cfg(feature = "runtime")]
-impl From<RadrootsRelayOutcomeKind> for PushOutboxRelayOutcomeKind {
+impl From<RadrootsRelayOutcomeKind> for PushOutboxTargetOutcomeKind {
fn from(kind: RadrootsRelayOutcomeKind) -> Self {
match kind {
RadrootsRelayOutcomeKind::Accepted => Self::Accepted,
@@ -458,7 +450,7 @@ impl From<RadrootsRelayOutcomeKind> for PushOutboxRelayOutcomeKind {
RadrootsRelayOutcomeKind::Error => Self::Error,
RadrootsRelayOutcomeKind::Timeout => Self::Timeout,
RadrootsRelayOutcomeKind::ConnectionFailed => Self::ConnectionFailed,
- RadrootsRelayOutcomeKind::RelayUrlRejected => Self::RelayUrlRejected,
+ RadrootsRelayOutcomeKind::RelayUrlRejected => Self::TargetUriRejected,
RadrootsRelayOutcomeKind::SkippedAlreadyAccepted => Self::SkippedAlreadyAccepted,
RadrootsRelayOutcomeKind::Unknown => Self::Unknown,
}
@@ -486,9 +478,14 @@ impl<'sdk> SyncClient<'sdk> {
observed_at_ms,
event_store: event_store.into(),
outbox: outbox.into(),
- relay_targets: SyncRelayTargetSummary {
- configured_count: self.sdk.configured_nostr_relay_urls().len(),
- configured_relays: self.sdk.configured_nostr_relay_urls(),
+ transport_profile: SyncTransportProfileSummary {
+ transport_profile_id: self
+ .sdk
+ .transport_profile()
+ .transport_profile_id()
+ .to_owned(),
+ configured_nostr_relay_count: self.sdk.configured_nostr_relay_urls().len(),
+ configured_nostr_relays: self.sdk.configured_nostr_relay_urls(),
},
})
}
@@ -572,8 +569,8 @@ impl<'sdk> SyncClient<'sdk> {
let policy = RadrootsOutboxPublishPolicy::new(
publish_now_ms.saturating_add(request.next_attempt_delay_ms),
)
- .republish_accepted_relays(request.republish_accepted_relays)
- .relay_url_policy(request.relay_url_policy.nostr_transport_policy());
+ .republish_accepted_relays(request.republish_accepted_targets)
+ .relay_url_policy(request.nostr_relay_url_policy.nostr_transport_policy());
let publish = publish_claimed_outbox_event(
&self.sdk._outbox,
&self.sdk._event_store,
@@ -998,14 +995,19 @@ fn push_event_receipt(
terminal_count: publish.terminal_count,
quorum: publish.quorum,
quorum_met: publish.quorum_met,
- relays: publish.relays.into_iter().map(push_relay_receipt).collect(),
+ targets: publish
+ .relays
+ .into_iter()
+ .map(push_target_receipt)
+ .collect(),
}
}
#[cfg(feature = "runtime")]
-fn push_relay_receipt(relay: RadrootsRelayPublishRelayReceipt) -> PushOutboxRelayReceipt {
- PushOutboxRelayReceipt {
- relay_url: relay.relay_url,
+fn push_target_receipt(relay: RadrootsRelayPublishRelayReceipt) -> PushOutboxTargetReceipt {
+ PushOutboxTargetReceipt {
+ transport_kind: RadrootsTransportKind::Nostr.canonical_label(),
+ endpoint_uri: relay.relay_url,
outcome_kind: relay.outcome.kind.into(),
attempted: relay.attempted,
message: relay.outcome.message,
diff --git a/crates/sdk/src/transport.rs b/crates/sdk/src/transport.rs
@@ -223,12 +223,12 @@ impl TargetSet {
targets: Vec<RadrootsTransportTarget>,
) -> Result<Self, RadrootsSdkError> {
if targets.is_empty() {
- return Err(RadrootsSdkError::empty_target_relays(
+ return Err(RadrootsSdkError::empty_transport_targets(
"sdk transport target set",
));
}
if targets.len() > SDK_TRANSPORT_TARGET_MAX_COUNT {
- return Err(RadrootsSdkError::relay_target_limit_exceeded(
+ return Err(RadrootsSdkError::transport_target_limit_exceeded(
SDK_TRANSPORT_TARGET_MAX_COUNT,
targets.len(),
));
diff --git a/crates/sdk/src/workflow_runtime.rs b/crates/sdk/src/workflow_runtime.rs
@@ -23,7 +23,7 @@ pub(crate) struct SdkWorkflowEnqueueRequest<'a> {
pub(crate) operation_kind: &'static str,
pub(crate) actor: &'a RadrootsActorContext,
pub(crate) frozen_draft: &'a RadrootsFrozenEventDraft,
- pub(crate) target_relays: TargetPolicy,
+ pub(crate) target_policy: TargetPolicy,
pub(crate) satisfaction_policy: SatisfactionPolicy,
pub(crate) idempotency_key: Option<SdkIdempotencyKey>,
}
@@ -43,7 +43,7 @@ pub(crate) async fn enqueue_signed_workflow(
signer: &dyn RadrootsEventSigner,
) -> Result<SdkWorkflowEnqueueReceipt, RadrootsSdkError> {
let delivery_plan =
- resolved_delivery_plan(sdk, &request.target_relays, request.satisfaction_policy)?;
+ resolved_delivery_plan(sdk, &request.target_policy, request.satisfaction_policy)?;
let signed_event = sign_authorized_draft(request.actor, signer, request.frozen_draft)?;
enqueue_signed_workflow_event(sdk, request, signed_event, delivery_plan).await
}
@@ -54,7 +54,7 @@ pub(crate) async fn enqueue_configured_signed_workflow(
request: SdkWorkflowEnqueueRequest<'_>,
) -> Result<SdkWorkflowEnqueueReceipt, RadrootsSdkError> {
let delivery_plan =
- resolved_delivery_plan(sdk, &request.target_relays, request.satisfaction_policy)?;
+ resolved_delivery_plan(sdk, &request.target_policy, request.satisfaction_policy)?;
let signed_event = sdk
.sign_with_configured_signer(RadrootsSdkSignRequest::new(
request.operation_kind,
@@ -155,21 +155,21 @@ struct SdkResolvedDeliveryPlan {
fn resolved_delivery_plan(
sdk: &RadrootsClient,
- target_relays: &TargetPolicy,
+ target_policy: &TargetPolicy,
satisfaction_policy: SatisfactionPolicy,
) -> Result<SdkResolvedDeliveryPlan, RadrootsSdkError> {
- match target_relays {
- TargetPolicy::Explicit(target_relays) => {
- delivery_plan_from_target_set("explicit", target_relays.clone(), satisfaction_policy)
+ match target_policy {
+ TargetPolicy::Explicit(target_policy) => {
+ delivery_plan_from_target_set("explicit", target_policy.clone(), satisfaction_policy)
}
TargetPolicy::UseConfiguredProfile => {
- let target_relays =
+ let target_policy =
TargetSet::from_normalized_nostr_relays(sdk.configured_nostr_relay_urls())?;
- delivery_plan_from_target_set("configured_profile", target_relays, satisfaction_policy)
+ delivery_plan_from_target_set("configured_profile", target_policy, satisfaction_policy)
}
TargetPolicy::UseTransportProfile => {
let target_set = sdk.transport_profile().target_set()?.ok_or_else(|| {
- RadrootsSdkError::empty_target_relays("publish transport profile")
+ RadrootsSdkError::empty_transport_targets("publish transport profile")
})?;
delivery_plan_from_target_set(
sdk.transport_profile().transport_profile_id(),
@@ -218,20 +218,20 @@ struct SdkWorkflowOutboxDigestInput<'a> {
operation_kind: &'static str,
expected_pubkey: &'a str,
draft: &'a RadrootsFrozenEventDraft,
- target_relays: &'a [String],
+ target_policy: &'a [String],
}
#[cfg(test)]
fn outbox_idempotency_digest_prefix(
operation_kind: &'static str,
frozen_draft: &RadrootsFrozenEventDraft,
- target_relays: &[String],
+ target_policy: &[String],
) -> String {
let input = SdkWorkflowOutboxDigestInput {
operation_kind,
expected_pubkey: frozen_draft.expected_pubkey.as_str(),
draft: frozen_draft,
- target_relays,
+ target_policy,
};
let bytes = serde_json::to_vec(&input).expect("workflow digest input serializes");
digest_prefix(hex::encode(Sha256::digest(bytes)).as_str())
diff --git a/crates/sdk/tests/dvm_runtime.rs b/crates/sdk/tests/dvm_runtime.rs
@@ -241,7 +241,10 @@ async fn dvm_configured_enqueue_reports_prepare_and_target_errors_without_mutati
.enqueue_trade_transition_proof_request(missing_relays)
.await
.expect_err("missing configured relays");
- assert!(matches!(error, RadrootsSdkError::EmptyTargetRelays { .. }));
+ assert!(matches!(
+ error,
+ RadrootsSdkError::EmptyTransportTargets { .. }
+ ));
assert_eq!(
store
.status_summary()
@@ -418,7 +421,10 @@ async fn dvm_trade_transition_proof_request_reports_prepare_and_target_errors_wi
.enqueue_trade_transition_proof_request_with_explicit_signer(missing_relays, &signer)
.await
.expect_err("missing configured relays");
- assert!(matches!(error, RadrootsSdkError::EmptyTargetRelays { .. }));
+ assert!(matches!(
+ error,
+ RadrootsSdkError::EmptyTransportTargets { .. }
+ ));
assert_eq!(
store
.status_summary()
diff --git a/crates/sdk/tests/farms_runtime.rs b/crates/sdk/tests/farms_runtime.rs
@@ -18,7 +18,7 @@ use radroots_sdk::{
FarmPrivateLocationLookupReceipt, FarmPrivateLocationReceipt, FarmPrivateLocationSetRequest,
FarmPrivateLocationSetResult, FarmPrivateLocationUpsertRequest, Geocoder,
GeocoderLocalityQuery, NostrProfile, NostrRelayUrlPolicy, PushOutboxEventState,
- PushOutboxRelayOutcomeKind, PushOutboxRequest, RadrootsClient, RadrootsSdkError,
+ PushOutboxRequest, PushOutboxTargetOutcomeKind, RadrootsClient, RadrootsSdkError,
RadrootsSdkErrorClass, RadrootsSdkGeoNamesErrorKind, RadrootsSdkRecoveryAction,
RadrootsSdkTimestamp, SdkExactLocation, SdkIdempotencyKey, SdkMutationState, SdkPublicLocality,
StorageStatusRequest, TargetPolicy, TargetSet, TransportProfile,
@@ -723,14 +723,14 @@ async fn farm_enqueue_publish_derives_order_independent_idempotency_key() {
farm(FARM_D_D_TAG, "North Farm"),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays([RELAY_B, RELAY, RELAY], NostrRelayUrlPolicy::Public)
- .expect("first target relays");
+ .try_with_nostr_targets([RELAY_B, RELAY, RELAY], NostrRelayUrlPolicy::Public)
+ .expect("first transport targets");
let second = FarmEnqueuePublishRequest::new(
farmer_actor(),
farm(FARM_D_D_TAG, "North Farm"),
TargetPolicy::explicit(
TargetSet::new([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
- .expect("second target relays"),
+ .expect("second transport targets"),
),
);
@@ -777,8 +777,8 @@ async fn farm_enqueue_publish_pushes_queued_event_with_mock_relay_sync() {
farm(FARM_D_D_TAG, "Sync Farm"),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("target relays");
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("transport targets");
let enqueue_receipt = sdk
.farms()
.enqueue_publish_with_explicit_signer(enqueue_request, &FixtureSigner::new(FARMER))
@@ -807,11 +807,11 @@ async fn farm_enqueue_publish_pushes_queued_event_with_mock_relay_sync() {
assert_eq!(event.terminal_count, 0);
assert_eq!(event.quorum, 1);
assert!(event.quorum_met);
- assert_eq!(event.relays.len(), 1);
- assert_eq!(event.relays[0].relay_url, RELAY);
+ assert_eq!(event.targets.len(), 1);
+ assert_eq!(event.targets[0].endpoint_uri, RELAY);
assert_eq!(
- event.relays[0].outcome_kind,
- PushOutboxRelayOutcomeKind::Accepted
+ event.targets[0].outcome_kind,
+ PushOutboxTargetOutcomeKind::Accepted
);
assert_eq!(adapter.captured_raw_events().len(), 1);
@@ -943,7 +943,7 @@ async fn farm_runtime_dtos_serialize_deterministically() {
farm(FARM_B_D_TAG, "Queued Farm"),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
.expect("relay targets")
.with_idempotency_key(
SdkIdempotencyKey::new("farm-serialized-idempotency").expect("idempotency"),
@@ -971,7 +971,7 @@ async fn farm_runtime_dtos_serialize_deterministically() {
"location": null,
"tags": ["vegetables", "local"]
},
- "target_relays": {
+ "target_policy": {
"kind": "explicit",
"targets": [
{
diff --git a/crates/sdk/tests/listings_runtime.rs b/crates/sdk/tests/listings_runtime.rs
@@ -309,7 +309,7 @@ async fn enqueue_publish_use_configured_profile_rejects_empty_transport_targets(
assert!(matches!(
error,
- RadrootsSdkError::EmptyTargetRelays { operation }
+ RadrootsSdkError::EmptyTransportTargets { operation }
if operation == "sdk transport target set"
));
}
@@ -430,16 +430,16 @@ async fn listing_runtime_dtos_serialize_deterministically() {
listing(LISTING_B_D_TAG, "Queued Coffee"),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
.expect("relay targets")
.with_idempotency_key(SdkIdempotencyKey::new("serialized-idempotency").expect("idempotency"))
.with_created_at(created_at);
let enqueue_json = serde_json::to_value(&enqueue_request).expect("enqueue request json");
assert_struct_serialize_error_paths(&enqueue_request, 5);
- assert_eq!(enqueue_json["target_relays"]["kind"], "explicit");
+ assert_eq!(enqueue_json["target_policy"]["kind"], "explicit");
assert_eq!(
- enqueue_json["target_relays"]["targets"],
+ enqueue_json["target_policy"]["targets"],
serde_json::json!([
{
"kind": "Nostr",
@@ -454,7 +454,7 @@ async fn listing_runtime_dtos_serialize_deterministically() {
])
);
assert_eq!(
- enqueue_json["target_relays"]["canonical_targets"],
+ enqueue_json["target_policy"]["canonical_targets"],
serde_json::json!([
"5136077cfe7eddcbfaddc5d7bf1f42cdbb8191f3691b86ccc3a81047851cef05",
"a1997ec4596596af6ffc65e6a30ab7cffa53ea71f524c1c86d64018b96d130af"
@@ -743,14 +743,14 @@ async fn enqueue_publish_derives_order_independent_idempotency_key() {
listing(LISTING_F_D_TAG, "Coffee"),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays([RELAY_B, RELAY, RELAY], NostrRelayUrlPolicy::Public)
- .expect("first target relays");
+ .try_with_nostr_targets([RELAY_B, RELAY, RELAY], NostrRelayUrlPolicy::Public)
+ .expect("first transport targets");
let second = ListingEnqueuePublishRequest::new(
actor(),
listing(LISTING_F_D_TAG, "Coffee"),
TargetPolicy::explicit(
TargetSet::new([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
- .expect("second target relays"),
+ .expect("second transport targets"),
),
);
diff --git a/crates/sdk/tests/market_runtime.rs b/crates/sdk/tests/market_runtime.rs
@@ -152,7 +152,7 @@ async fn market_search_refreshes_local_projection_and_reads_fts() {
listing("Blueberries"),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
.expect("target relays");
let receipt = sdk
.listings()
diff --git a/crates/sdk/tests/orders_runtime.rs b/crates/sdk/tests/orders_runtime.rs
@@ -564,7 +564,7 @@ fn listing_event_ptr() -> RadrootsNostrEventPtr {
fn explicit_trade_relays() -> TargetPolicy {
TargetPolicy::explicit(
- TargetSet::new([RELAY], NostrRelayUrlPolicy::Public).expect("target relays"),
+ TargetSet::new([RELAY], NostrRelayUrlPolicy::Public).expect("transport targets"),
)
}
@@ -647,7 +647,7 @@ fn order_request(raw_order_id: &str) -> RadrootsOrderRequest {
fn trade_propose_request(
raw_order_id: &str,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
) -> TradeProposeRequest {
let order = order_request(raw_order_id);
TradeProposeRequest::new(
@@ -660,7 +660,7 @@ fn trade_propose_request(
order.economics,
explicit_trade_relays(),
publish_mode,
- ack_policy,
+ satisfaction_policy,
)
}
@@ -853,8 +853,8 @@ async fn order_submit_enqueue_stores_event_queues_outbox_and_status_sees_request
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("target relays")
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("transport targets")
.try_with_idempotency_key("order-submit-enqueue-idempotency")
.expect("idempotency key");
@@ -2588,7 +2588,7 @@ async fn trade_resync_errors_on_total_relay_failure() {
.await
.expect_err("total relay failure");
- assert_eq!(error.code(), "product_sync_relay_setup_failure");
+ assert_eq!(error.code(), "product_sync_transport_setup_failure");
}
#[cfg(feature = "relay-runtime")]
@@ -3336,8 +3336,8 @@ async fn order_submit_enqueue_returns_sanitized_signer_errors_before_mutation()
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("target relays");
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("transport targets");
let error = sdk
.trades()
@@ -3386,15 +3386,15 @@ async fn order_submit_enqueue_derives_order_independent_idempotency_key() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY_B, RELAY, RELAY], NostrRelayUrlPolicy::Public)
- .expect("first target relays");
+ .try_with_nostr_targets([RELAY_B, RELAY, RELAY], NostrRelayUrlPolicy::Public)
+ .expect("first transport targets");
let second = TradeSubmitEnqueueRequest::new(
buyer_actor(),
listing_event_ptr(),
order_request("order-submit-idempotent"),
TargetPolicy::explicit(
TargetSet::new([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
- .expect("second target relays"),
+ .expect("second transport targets"),
),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
@@ -3473,8 +3473,8 @@ async fn order_submit_enqueue_pushes_queued_event_with_mock_relay_sync() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("target relays");
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("transport targets");
let enqueue_receipt = sdk
.trades()
.enqueue_submit_with_explicit_signer(
@@ -3506,11 +3506,11 @@ async fn order_submit_enqueue_pushes_queued_event_with_mock_relay_sync() {
assert_eq!(event.terminal_count, 0);
assert_eq!(event.quorum, 1);
assert!(event.quorum_met);
- assert_eq!(event.relays.len(), 1);
- assert_eq!(event.relays[0].relay_url, RELAY);
+ assert_eq!(event.targets.len(), 1);
+ assert_eq!(event.targets[0].endpoint_uri, RELAY);
assert_eq!(
- event.relays[0].outcome_kind,
- PushOutboxRelayOutcomeKind::Accepted
+ event.targets[0].outcome_kind,
+ PushOutboxTargetOutcomeKind::Accepted
);
assert_eq!(adapter.captured_raw_events().len(), 1);
@@ -3537,8 +3537,8 @@ async fn order_submit_enqueue_reports_partial_local_mutation_after_outbox_confli
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("first target relays")
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("first transport targets")
.try_with_idempotency_key("order-submit-conflict-idempotency")
.expect("first idempotency key");
sdk.trades()
@@ -3554,8 +3554,8 @@ async fn order_submit_enqueue_reports_partial_local_mutation_after_outbox_confli
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("second target relays")
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("second transport targets")
.try_with_idempotency_key("order-submit-conflict-idempotency")
.expect("second idempotency key");
let error = sdk
@@ -3646,7 +3646,7 @@ async fn order_submit_runtime_dtos_serialize_deterministically() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
.expect("relay targets")
.with_idempotency_key(
SdkIdempotencyKey::new("order-serialized-idempotency").expect("idempotency"),
@@ -3656,7 +3656,7 @@ async fn order_submit_runtime_dtos_serialize_deterministically() {
assert_struct_serialize_error_paths(&enqueue_request, 6);
assert_eq!(
- enqueue_json["target_relays"],
+ enqueue_json["target_policy"],
serde_json::json!({
"kind": "explicit",
"targets": [
@@ -4321,7 +4321,7 @@ async fn order_request_evidence_ingest_stores_request_and_enables_decision_enque
&actor,
plan,
TargetPolicy::try_nostr_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("target relays"),
+ .expect("transport targets"),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -4667,8 +4667,8 @@ async fn order_decision_runtime_dtos_serialize_deterministically() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
- .expect("target relays")
+ .try_with_nostr_targets([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
+ .expect("transport targets")
.with_idempotency_key(
SdkIdempotencyKey::new("order-decision-serialized-idempotency").expect("idempotency"),
)
@@ -4677,7 +4677,7 @@ async fn order_decision_runtime_dtos_serialize_deterministically() {
assert_struct_serialize_error_paths(&enqueue_request, 6);
assert_eq!(
- enqueue_json["target_relays"],
+ enqueue_json["target_policy"],
serde_json::json!({
"kind": "explicit",
"targets": [
@@ -4870,7 +4870,7 @@ async fn order_revision_and_cancellation_dtos_serialize_deterministically() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
.expect("proposal relays")
.with_idempotency_key(SdkIdempotencyKey::new("order-revision-proposal-dto").expect("key"))
.with_created_at(created_at);
@@ -4878,7 +4878,7 @@ async fn order_revision_and_cancellation_dtos_serialize_deterministically() {
serde_json::to_value(&proposal_enqueue).expect("proposal enqueue json");
assert_struct_serialize_error_paths(&proposal_enqueue, 7);
assert_eq!(
- proposal_enqueue_json["target_relays"],
+ proposal_enqueue_json["target_policy"],
serde_json::json!({
"kind": "explicit",
"targets": [
@@ -4957,7 +4957,7 @@ async fn order_revision_and_cancellation_dtos_serialize_deterministically() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
.expect("decision relays")
.with_idempotency_key(
SdkIdempotencyKey::new("order-revision-decision-dto").expect("decision idempotency"),
@@ -5018,7 +5018,7 @@ async fn order_revision_and_cancellation_dtos_serialize_deterministically() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets([RELAY, RELAY_B], NostrRelayUrlPolicy::Public)
.expect("cancellation relays")
.with_idempotency_key(
SdkIdempotencyKey::new("order-cancellation-dto").expect("cancellation idempotency"),
@@ -5089,8 +5089,8 @@ async fn order_decision_enqueue_accept_stores_event_queues_outbox_and_updates_st
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("target relays")
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("transport targets")
.try_with_idempotency_key("order-decision-accept-idempotency")
.expect("idempotency");
@@ -5196,8 +5196,8 @@ async fn order_decision_enqueue_decline_stores_event_and_status_sees_declined()
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("target relays");
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("transport targets");
let receipt = sdk
.trades()
@@ -5240,8 +5240,8 @@ async fn order_decision_enqueue_rejects_missing_request_evidence_before_mutation
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("target relays");
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("transport targets");
let error = sdk
.trades()
@@ -5288,8 +5288,8 @@ async fn order_decision_enqueue_returns_sanitized_signer_errors_before_decision_
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("target relays");
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("transport targets");
let error = sdk
.trades()
@@ -5343,8 +5343,8 @@ async fn order_decision_enqueue_rejects_existing_decision_state_before_mutation(
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("target relays");
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("transport targets");
let error = sdk
.trades()
@@ -5408,7 +5408,7 @@ async fn order_revision_lifecycle_accepts_proposal_and_waits_for_rhi() {
&proposal_actor,
proposal_plan,
TargetPolicy::try_nostr_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("proposal target relays"),
+ .expect("proposal transport targets"),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
Some(
@@ -5459,7 +5459,7 @@ async fn order_revision_lifecycle_accepts_proposal_and_waits_for_rhi() {
&revision_decision_actor,
revision_decision_plan,
TargetPolicy::try_nostr_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("revision decision target relays"),
+ .expect("revision decision transport targets"),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -5553,8 +5553,8 @@ async fn order_revision_proposal_status_exposes_pending_and_blocks_follow_on_lif
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("proposal target relays"),
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("proposal transport targets"),
&FixtureSigner::new(SELLER_SECRET_KEY_HEX),
)
.await
@@ -5596,8 +5596,8 @@ async fn order_revision_proposal_status_exposes_pending_and_blocks_follow_on_lif
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("decision target relays"),
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("decision transport targets"),
&FixtureSigner::new(SELLER_SECRET_KEY_HEX),
)
.await
@@ -5624,8 +5624,8 @@ async fn order_revision_proposal_status_exposes_pending_and_blocks_follow_on_lif
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("blocked proposal target relays"),
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("blocked proposal transport targets"),
&FixtureSigner::new(SELLER_SECRET_KEY_HEX),
)
.await
@@ -5671,8 +5671,8 @@ async fn order_declined_revision_finalizes_declined_negotiation() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("proposal target relays"),
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("proposal transport targets"),
&FixtureSigner::new(SELLER_SECRET_KEY_HEX),
)
.await
@@ -5696,8 +5696,8 @@ async fn order_declined_revision_finalizes_declined_negotiation() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("declined revision target relays"),
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("declined revision transport targets"),
&FixtureSigner::new(BUYER_SECRET_KEY_HEX),
)
.await
@@ -5746,8 +5746,8 @@ async fn order_declined_revision_finalizes_declined_negotiation() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("second decision target relays"),
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("second decision transport targets"),
&FixtureSigner::new(BUYER_SECRET_KEY_HEX),
)
.await
@@ -5792,7 +5792,7 @@ async fn order_cancel_lifecycle_enqueue_updates_status() {
&cancellation_actor,
cancellation_plan,
TargetPolicy::try_nostr_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("cancellation target relays"),
+ .expect("cancellation transport targets"),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
Some(
@@ -5830,8 +5830,8 @@ async fn order_cancel_lifecycle_enqueue_updates_status() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("replay target relays")
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("replay transport targets")
.try_with_idempotency_key("order-lifecycle-cancel")
.expect("replay idempotency"),
&FixtureSigner::new(BUYER_SECRET_KEY_HEX),
@@ -5886,8 +5886,8 @@ async fn order_lifecycle_enqueue_rejects_invalid_state_before_mutation() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("missing target relays"),
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("missing transport targets"),
&FixtureSigner::new(SELLER_SECRET_KEY_HEX),
)
.await
@@ -5917,8 +5917,8 @@ async fn order_lifecycle_enqueue_rejects_invalid_state_before_mutation() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("decision target relays"),
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("decision transport targets"),
&FixtureSigner::new(SELLER_SECRET_KEY_HEX),
)
.await
@@ -5944,8 +5944,8 @@ async fn order_lifecycle_enqueue_rejects_invalid_state_before_mutation() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("revision decision target relays"),
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("revision decision transport targets"),
&FixtureSigner::new(BUYER_SECRET_KEY_HEX),
)
.await
@@ -5967,8 +5967,8 @@ async fn order_lifecycle_enqueue_rejects_invalid_state_before_mutation() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
- .expect("cancellation target relays"),
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
+ .expect("cancellation transport targets"),
&FixtureSigner::new(BUYER_SECRET_KEY_HEX),
)
.await
diff --git a/crates/sdk/tests/runtime_foundation.rs b/crates/sdk/tests/runtime_foundation.rs
@@ -97,7 +97,7 @@ fn invalid_relay_url_errors_redact_userinfo() {
assert!(!error.retryable());
assert_eq!(
error.recovery_actions(),
- vec![RadrootsSdkRecoveryAction::ConfigureRelayTargets]
+ vec![RadrootsSdkRecoveryAction::ConfigureTransportTargets]
);
assert!(message.contains("<redacted>@relay.example.com/path?<redacted>"));
assert!(!message.contains("password"));
@@ -106,7 +106,7 @@ fn invalid_relay_url_errors_redact_userinfo() {
assert_eq!(detail["code"], "invalid_relay_url");
assert_eq!(detail["class"], "configuration");
assert_eq!(detail["retryable"], false);
- assert_eq!(detail["recovery_actions"][0], "configure_relay_targets");
+ assert_eq!(detail["recovery_actions"][0], "configure_transport_targets");
assert!(!detail.to_string().contains("password"));
assert!(!detail.to_string().contains("token=secret"));
assert!(!detail.to_string().contains("frag"));
@@ -393,23 +393,23 @@ fn sdk_error_contract_methods_cover_all_variants() {
vec![RadrootsSdkRecoveryAction::SelectAuthorizedActor],
),
(
- RadrootsSdkError::EmptyTargetRelays {
+ RadrootsSdkError::EmptyTransportTargets {
operation: "listing.publish".to_owned(),
},
- "empty_target_relays",
+ "empty_transport_targets",
RadrootsSdkErrorClass::Configuration,
false,
- vec![RadrootsSdkRecoveryAction::ConfigureRelayTargets],
+ vec![RadrootsSdkRecoveryAction::ConfigureTransportTargets],
),
(
- RadrootsSdkError::RelayTargetLimitExceeded {
+ RadrootsSdkError::TransportTargetLimitExceeded {
max: 20,
actual: 21,
},
- "relay_target_limit_exceeded",
+ "transport_target_limit_exceeded",
RadrootsSdkErrorClass::Configuration,
false,
- vec![RadrootsSdkRecoveryAction::ConfigureRelayTargets],
+ vec![RadrootsSdkRecoveryAction::ConfigureTransportTargets],
),
(
TargetSet::new(["wss://u:p@relay.example.com"], NostrRelayUrlPolicy::Public)
@@ -417,7 +417,7 @@ fn sdk_error_contract_methods_cover_all_variants() {
"invalid_relay_url",
RadrootsSdkErrorClass::Configuration,
false,
- vec![RadrootsSdkRecoveryAction::ConfigureRelayTargets],
+ vec![RadrootsSdkRecoveryAction::ConfigureTransportTargets],
),
(
RadrootsSdkError::IdempotencyConflict {
@@ -478,10 +478,10 @@ fn sdk_error_contract_methods_cover_all_variants() {
vec![RadrootsSdkRecoveryAction::EnableRequiredFeature],
),
(
- RadrootsSdkError::ProductSyncRelaySetupFailure {
+ RadrootsSdkError::ProductSyncTransportSetupFailure {
message: "relay setup".to_owned(),
},
- "product_sync_relay_setup_failure",
+ "product_sync_transport_setup_failure",
RadrootsSdkErrorClass::Transport,
true,
vec![RadrootsSdkRecoveryAction::RetryAfterTransportFailure],
@@ -551,10 +551,10 @@ fn sdk_error_contract_methods_cover_all_variants() {
vec![RadrootsSdkRecoveryAction::RetryGeoNamesDownload],
),
(
- RadrootsSdkError::RelayTransport {
+ RadrootsSdkError::Transport {
message: "relay".to_owned(),
},
- "relay_transport",
+ "transport",
RadrootsSdkErrorClass::Transport,
true,
vec![RadrootsSdkRecoveryAction::RetryAfterTransportFailure],
@@ -654,7 +654,7 @@ fn relay_target_set_validates_normalizes_dedupes_preserves_order_and_caps() {
assert!(matches!(
TargetSet::new(Vec::<String>::new(), NostrRelayUrlPolicy::Public),
- Err(RadrootsSdkError::EmptyTargetRelays { .. })
+ Err(RadrootsSdkError::EmptyTransportTargets { .. })
));
let too_many = (0..=SDK_TRANSPORT_TARGET_MAX_COUNT)
@@ -662,7 +662,7 @@ fn relay_target_set_validates_normalizes_dedupes_preserves_order_and_caps() {
.collect::<Vec<_>>();
assert!(matches!(
TargetSet::new(too_many, NostrRelayUrlPolicy::Public),
- Err(RadrootsSdkError::RelayTargetLimitExceeded {
+ Err(RadrootsSdkError::TransportTargetLimitExceeded {
max: SDK_TRANSPORT_TARGET_MAX_COUNT,
actual
}) if actual == SDK_TRANSPORT_TARGET_MAX_COUNT + 1
@@ -736,7 +736,7 @@ fn storage_backup_and_integrity_contract_dtos_serialize() {
store: store.clone(),
total_events: 2,
projection_eligible_events: 1,
- relay_observations: 1,
+ transport_observations: 1,
last_event_seq: Some(2),
last_event_updated_at_ms: Some(1_700_000_000_000),
},
@@ -775,7 +775,7 @@ fn storage_backup_and_integrity_contract_dtos_serialize() {
},
"total_events": 2,
"projection_eligible_events": 1,
- "relay_observations": 1,
+ "transport_observations": 1,
"last_event_seq": 2,
"last_event_updated_at_ms": 1700000000000i64
},
diff --git a/crates/sdk/tests/sync_runtime.rs b/crates/sdk/tests/sync_runtime.rs
@@ -24,10 +24,10 @@ use radroots_sdk::{
ListingPreparePublishRequest, NostrProfile, NostrRelayUrlPolicy,
PUSH_OUTBOX_DEFAULT_CLAIM_TTL_MS, PUSH_OUTBOX_DEFAULT_LIMIT,
PUSH_OUTBOX_DEFAULT_NEXT_ATTEMPT_DELAY_MS, PUSH_OUTBOX_MAX_LIMIT, PushOutboxEventReceipt,
- PushOutboxEventState, PushOutboxReceipt, PushOutboxRelayOutcomeKind, PushOutboxRelayReceipt,
- PushOutboxRequest, RadrootsClient, RadrootsSdkError, RadrootsSdkTimestamp, RestoreRequest,
- SdkBackupManifestKind, SdkRelayAuthPolicy, SdkRestoreState, StorageStatusRequest,
- SyncStatusRequest, SyncStatusSource, TargetPolicy, TransportProfile,
+ PushOutboxEventState, PushOutboxReceipt, PushOutboxRequest, PushOutboxTargetOutcomeKind,
+ PushOutboxTargetReceipt, RadrootsClient, RadrootsSdkError, RadrootsSdkTimestamp,
+ RestoreRequest, SdkBackupManifestKind, SdkRelayAuthPolicy, SdkRestoreState,
+ StorageStatusRequest, SyncStatusRequest, SyncStatusSource, TargetPolicy, TransportProfile,
};
use radroots_transport_nostr::{
RadrootsMockRelayPublishAdapter, RadrootsRelayOutcome, RadrootsRelayPublishAdapter,
@@ -516,7 +516,7 @@ async fn enqueue_listing_with_policy(
listing(d_tag, title),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays(relays, url_policy)
+ .try_with_nostr_targets(relays, url_policy)
.expect("relay targets"),
&FixtureSigner::new(SELLER),
)
@@ -539,7 +539,7 @@ async fn sync_status_empty_store_reports_canonical_sources_and_configured_relays
assert_eq!(receipt.observed_at_ms, 1_700_000_000_000);
assert_eq!(receipt.event_store.total_events, 0);
assert_eq!(receipt.event_store.projection_eligible_events, 0);
- assert_eq!(receipt.event_store.relay_observations, 0);
+ assert_eq!(receipt.event_store.transport_observations, 0);
assert_eq!(receipt.event_store.last_event_seq, None);
assert_eq!(receipt.outbox.total_events, 0);
assert_eq!(receipt.outbox.pending_events, 0);
@@ -547,9 +547,10 @@ async fn sync_status_empty_store_reports_canonical_sources_and_configured_relays
assert_eq!(receipt.outbox.terminal_events, 0);
assert_eq!(receipt.outbox.failed_terminal_events, 0);
assert_eq!(receipt.outbox.ready_signed_events, 0);
- assert_eq!(receipt.relay_targets.configured_count, 2);
+ assert_eq!(receipt.transport_profile.transport_profile_id, "nostr");
+ assert_eq!(receipt.transport_profile.configured_nostr_relay_count, 2);
assert_eq!(
- receipt.relay_targets.configured_relays,
+ receipt.transport_profile.configured_nostr_relays,
vec![RELAY_B.to_owned(), RELAY_A.to_owned()]
);
assert_eq!(
@@ -560,7 +561,7 @@ async fn sync_status_empty_store_reports_canonical_sources_and_configured_relays
"event_store": {
"total_events": 0,
"projection_eligible_events": 0,
- "relay_observations": 0,
+ "transport_observations": 0,
"last_event_seq": null,
"last_event_updated_at_ms": null
},
@@ -575,9 +576,10 @@ async fn sync_status_empty_store_reports_canonical_sources_and_configured_relays
"last_attempt_at_ms": null,
"last_error": null
},
- "relay_targets": {
- "configured_count": 2,
- "configured_relays": [RELAY_B, RELAY_A]
+ "transport_profile": {
+ "transport_profile_id": "nostr",
+ "configured_nostr_relay_count": 2,
+ "configured_nostr_relays": [RELAY_B, RELAY_A]
}
})
);
@@ -1480,14 +1482,14 @@ async fn product_push_outbox_uses_radrootsd_proxy_transport_with_daemon_resolved
receipt.events[0].final_state,
PushOutboxEventState::Published
);
- assert_eq!(receipt.events[0].relays.len(), 1);
+ assert_eq!(receipt.events[0].targets.len(), 1);
assert_eq!(
- receipt.events[0].relays[0].relay_url,
+ receipt.events[0].targets[0].endpoint_uri,
"wss://daemon-resolved.example.com"
);
assert_eq!(
- receipt.events[0].relays[0].outcome_kind,
- PushOutboxRelayOutcomeKind::Accepted
+ receipt.events[0].targets[0].outcome_kind,
+ PushOutboxTargetOutcomeKind::Accepted
);
let recorded = handle.join().expect("proxy request");
@@ -1651,7 +1653,7 @@ async fn product_push_outbox_radrootsd_proxy_error_and_terminal_paths_update_out
retryable.events[0].final_state,
PushOutboxEventState::PublishRetryable
);
- assert!(retryable.events[0].relays.is_empty());
+ assert!(retryable.events[0].targets.is_empty());
let retryable_status = retryable_sdk
.sync()
.status(SyncStatusRequest::new())
@@ -1702,8 +1704,8 @@ async fn product_push_outbox_radrootsd_proxy_error_and_terminal_paths_update_out
PushOutboxEventState::FailedTerminal
);
assert_eq!(
- terminal.events[0].relays[0].outcome_kind,
- PushOutboxRelayOutcomeKind::Invalid
+ terminal.events[0].targets[0].outcome_kind,
+ PushOutboxTargetOutcomeKind::Invalid
);
let terminal_status = terminal_sdk
.sync()
@@ -1720,9 +1722,8 @@ fn push_outbox_contract_dtos_serialize_deterministically() {
let request = PushOutboxRequest::new()
.with_limit(2)
.with_outbox_event_id(7)
- .republish_accepted_relays(true)
- .with_accepted_quorum(1)
- .with_relay_url_policy(NostrRelayUrlPolicy::Localhost)
+ .republish_accepted_targets(true)
+ .with_nostr_relay_url_policy(NostrRelayUrlPolicy::Localhost)
.with_auth_policy(SdkRelayAuthPolicy::DetectOnly)
.with_claim_ttl_ms(1_000)
.with_next_attempt_delay_ms(2_000);
@@ -1731,9 +1732,8 @@ fn push_outbox_contract_dtos_serialize_deterministically() {
serde_json::json!({
"limit": 1,
"outbox_event_id": 7,
- "republish_accepted_relays": true,
- "accepted_quorum": 1,
- "relay_url_policy": "localhost",
+ "republish_accepted_targets": true,
+ "nostr_relay_url_policy": "localhost",
"auth_policy": "detect_only",
"claim_ttl_ms": 1000,
"next_attempt_delay_ms": 2000
@@ -1757,9 +1757,10 @@ fn push_outbox_contract_dtos_serialize_deterministically() {
terminal_count: 0,
quorum: 1,
quorum_met: true,
- relays: vec![PushOutboxRelayReceipt {
- relay_url: RELAY_A.to_owned(),
- outcome_kind: PushOutboxRelayOutcomeKind::DuplicateAccepted,
+ targets: vec![PushOutboxTargetReceipt {
+ transport_kind: "nostr".to_owned(),
+ endpoint_uri: RELAY_A.to_owned(),
+ outcome_kind: PushOutboxTargetOutcomeKind::DuplicateAccepted,
attempted: true,
message: Some("duplicate".to_owned()),
}],
@@ -1782,8 +1783,9 @@ fn push_outbox_contract_dtos_serialize_deterministically() {
"terminal_count": 0,
"quorum": 1,
"quorum_met": true,
- "relays": [{
- "relay_url": RELAY_A,
+ "targets": [{
+ "transport_kind": "nostr",
+ "endpoint_uri": RELAY_A,
"outcome_kind": "duplicate_accepted",
"attempted": true,
"message": "duplicate"
@@ -1893,10 +1895,10 @@ async fn push_outbox_with_adapter_uses_queued_targets_without_builder_relays() {
assert_eq!(event.terminal_count, 0);
assert_eq!(event.quorum, 1);
assert!(event.quorum_met);
- assert_eq!(event.relays.len(), 1);
+ assert_eq!(event.targets.len(), 1);
assert_eq!(
- event.relays[0].outcome_kind,
- PushOutboxRelayOutcomeKind::Accepted
+ event.targets[0].outcome_kind,
+ PushOutboxTargetOutcomeKind::Accepted
);
assert_eq!(adapter.captured_raw_events().len(), 1);
@@ -1993,7 +1995,7 @@ async fn push_outbox_with_adapter_accepts_explicit_queued_localhost_ws_targets()
&adapter,
PushOutboxRequest::new()
.with_limit(1)
- .with_relay_url_policy(NostrRelayUrlPolicy::Localhost),
+ .with_nostr_relay_url_policy(NostrRelayUrlPolicy::Localhost),
)
.await
.expect("push");
@@ -2012,20 +2014,20 @@ async fn push_outbox_with_adapter_accepts_explicit_queued_localhost_ws_targets()
assert_eq!(event.terminal_count, 0);
assert_eq!(event.quorum, 3);
assert!(event.quorum_met);
- assert_eq!(event.relays.len(), 3);
+ assert_eq!(event.targets.len(), 3);
assert!(
event
- .relays
+ .targets
.iter()
- .all(|relay| relay.outcome_kind == PushOutboxRelayOutcomeKind::Accepted)
+ .all(|target| target.outcome_kind == PushOutboxTargetOutcomeKind::Accepted)
);
- let relay_urls = event
- .relays
+ let endpoint_uris = event
+ .targets
.iter()
- .map(|relay| relay.relay_url.as_str())
+ .map(|target| target.endpoint_uri.as_str())
.collect::<Vec<_>>();
assert_eq!(
- relay_urls,
+ endpoint_uris,
vec![LOCAL_RELAY_A, LOCAL_RELAY_B, LOCAL_RELAY_C]
);
assert_eq!(adapter.captured_raw_events().len(), 1);
@@ -2038,7 +2040,7 @@ fn enqueue_publish_rejects_nonlocal_ws_relay_targets() {
listing(LISTING_C_D_TAG, "Nonlocal Coffee"),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays([NONLOCAL_WS_RELAY], NostrRelayUrlPolicy::Localhost)
+ .try_with_nostr_targets([NONLOCAL_WS_RELAY], NostrRelayUrlPolicy::Localhost)
.expect_err("nonlocal ws relay target");
assert!(matches!(error, RadrootsSdkError::InvalidRelayUrl { .. }));
@@ -2048,7 +2050,7 @@ fn enqueue_publish_rejects_nonlocal_ws_relay_targets() {
listing(LISTING_C_D_TAG, "Private LAN Coffee"),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays([PRIVATE_LAN_WS_RELAY], NostrRelayUrlPolicy::Localhost)
+ .try_with_nostr_targets([PRIVATE_LAN_WS_RELAY], NostrRelayUrlPolicy::Localhost)
.expect_err("private LAN ws relay target");
assert!(matches!(error, RadrootsSdkError::InvalidRelayUrl { .. }));
@@ -2095,32 +2097,35 @@ async fn push_outbox_preserves_retryable_and_terminal_relay_outcomes() {
assert_eq!(event.terminal_count, 1);
assert!(!event.quorum_met);
- let relay_a = event
- .relays
+ let target_a = event
+ .targets
.iter()
- .find(|relay| relay.relay_url == RELAY_A)
- .expect("relay a");
- let relay_b = event
- .relays
+ .find(|target| target.endpoint_uri == RELAY_A)
+ .expect("target a");
+ let target_b = event
+ .targets
.iter()
- .find(|relay| relay.relay_url == RELAY_B)
- .expect("relay b");
- let relay_c = event
- .relays
+ .find(|target| target.endpoint_uri == RELAY_B)
+ .expect("target b");
+ let target_c = event
+ .targets
.iter()
- .find(|relay| relay.relay_url == RELAY_C)
- .expect("relay c");
+ .find(|target| target.endpoint_uri == RELAY_C)
+ .expect("target c");
assert_eq!(
- relay_a.outcome_kind,
- PushOutboxRelayOutcomeKind::DuplicateAccepted
+ target_a.outcome_kind,
+ PushOutboxTargetOutcomeKind::DuplicateAccepted
);
assert_eq!(
- relay_b.outcome_kind,
- PushOutboxRelayOutcomeKind::AuthRequired
+ target_b.outcome_kind,
+ PushOutboxTargetOutcomeKind::AuthRequired
);
- assert_eq!(relay_c.outcome_kind, PushOutboxRelayOutcomeKind::Restricted);
- assert_eq!(relay_b.message.as_deref(), Some("auth-required: login"));
+ assert_eq!(
+ target_c.outcome_kind,
+ PushOutboxTargetOutcomeKind::Restricted
+ );
+ assert_eq!(target_b.message.as_deref(), Some("auth-required: login"));
}
#[tokio::test]
@@ -2162,11 +2167,11 @@ async fn push_outbox_continues_after_adapter_transport_failure_and_releases_clai
receipt
.events
.iter()
- .flat_map(|event| event.relays.iter())
- .all(|relay| {
- relay.attempted
- && relay.outcome_kind == PushOutboxRelayOutcomeKind::ConnectionFailed
- && relay.message.as_deref() == Some("adapter boundary unavailable")
+ .flat_map(|event| event.targets.iter())
+ .all(|target| {
+ target.attempted
+ && target.outcome_kind == PushOutboxTargetOutcomeKind::ConnectionFailed
+ && target.message.as_deref() == Some("adapter boundary unavailable")
})
);
diff --git a/crates/sdk/tests/trade_product_publish_runtime.rs b/crates/sdk/tests/trade_product_publish_runtime.rs
@@ -21,7 +21,7 @@ use radroots_events::{
};
use radroots_nostr::prelude::{RadrootsNostrKeys, RadrootsNostrSecretKey};
use radroots_sdk::{
- NostrRelayUrlPolicy, ProxyProfile, PublishMode, PushOutboxRelayOutcomeKind, RadrootsClient,
+ NostrRelayUrlPolicy, ProxyProfile, PublishMode, PushOutboxTargetOutcomeKind, RadrootsClient,
RadrootsSdkLocalKeySigner, RadrootsSdkSignerProvider, RadrootsSdkTimestamp, SatisfactionPolicy,
TargetPolicy, TargetSet, TradeMutationOutcome, TradeProposeRequest, TransportProfile,
};
@@ -206,7 +206,7 @@ fn order_request(raw_order_id: &str) -> RadrootsOrderRequest {
fn trade_propose_request(
raw_order_id: &str,
publish_mode: PublishMode,
- ack_policy: SatisfactionPolicy,
+ satisfaction_policy: SatisfactionPolicy,
) -> TradeProposeRequest {
let order = order_request(raw_order_id);
TradeProposeRequest::new(
@@ -219,7 +219,7 @@ fn trade_propose_request(
order.economics,
explicit_trade_relays(),
publish_mode,
- ack_policy,
+ satisfaction_policy,
)
}
@@ -274,8 +274,8 @@ async fn trade_product_propose_enqueue_and_publish_uses_ack_policy() {
assert_eq!(publish.events[0].quorum, 1);
assert!(publish.events[0].quorum_met);
assert_eq!(
- publish.events[0].relays[0].outcome_kind,
- PushOutboxRelayOutcomeKind::Accepted
+ publish.events[0].targets[0].outcome_kind,
+ PushOutboxTargetOutcomeKind::Accepted
);
let recorded = handle.join().expect("proxy request");
diff --git a/crates/sdk/tests/trade_public_api.rs b/crates/sdk/tests/trade_public_api.rs
@@ -32,7 +32,7 @@ async fn grouped_trade_surface_is_the_public_product_entrypoint() {
.await
.expect_err("resync requires configured relays");
- assert_eq!(resync_error.code(), "empty_target_relays");
+ assert_eq!(resync_error.code(), "empty_transport_targets");
let validation_receipt_error = validation_receipts
.list(
@@ -42,7 +42,7 @@ async fn grouped_trade_surface_is_the_public_product_entrypoint() {
.await
.expect_err("validation receipt list requires configured relays");
- assert_eq!(validation_receipt_error.code(), "empty_target_relays");
+ assert_eq!(validation_receipt_error.code(), "empty_transport_targets");
let seller_actor =
RadrootsActorContext::test(SELLER_PUBLIC_KEY_HEX, [RadrootsActorRole::Seller])
diff --git a/crates/sdk/tests/unit/dvm_runtime_tests.rs b/crates/sdk/tests/unit/dvm_runtime_tests.rs
@@ -232,7 +232,7 @@ fn enqueue_request_builders_and_ingest_request_builders_are_deterministic() {
prepare.clone(),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays([RELAY], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets([RELAY], NostrRelayUrlPolicy::Public)
.expect("relays")
.with_idempotency_key(idempotency)
.with_inventory_sequence(11)
@@ -242,7 +242,7 @@ fn enqueue_request_builders_and_ingest_request_builders_are_deterministic() {
assert_eq!(request.prepare.inventory_sequence, 11);
assert_eq!(request.prepare.previous_state_root, Some(hash32('1')));
assert_eq!(serialized["proof_mode"], "none");
- assert_eq!(serialized["target_relays"]["kind"], "explicit");
+ assert_eq!(serialized["target_policy"]["kind"], "explicit");
assert_eq!(serialized["idempotency_key"]["value"], "<redacted>");
assert_eq!(serialized["idempotency_key"]["len"], idempotency_len);
@@ -269,7 +269,7 @@ fn enqueue_request_builders_and_ingest_request_builders_are_deterministic() {
prepare,
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays(["ws://relay.example.com"], NostrRelayUrlPolicy::Public),
+ .try_with_nostr_targets(["ws://relay.example.com"], NostrRelayUrlPolicy::Public),
Err(RadrootsSdkError::InvalidRelayUrl { .. })
));
assert!(matches!(
diff --git a/crates/sdk/tests/unit/error_tests.rs b/crates/sdk/tests/unit/error_tests.rs
@@ -132,7 +132,7 @@ fn listing_and_store_errors_convert_to_sdk_error_classes() {
fn outbox_error_conversion_handles_empty_targets_and_fallbacks() {
assert!(matches!(
RadrootsSdkError::from(radroots_outbox::RadrootsOutboxError::EmptyDeliveryTargets),
- RadrootsSdkError::EmptyTargetRelays { ref operation } if operation == "outbox enqueue"
+ RadrootsSdkError::EmptyTransportTargets { ref operation } if operation == "outbox enqueue"
));
assert!(matches!(
@@ -236,7 +236,7 @@ fn relay_transport_error_conversion_redacts_and_classifies_url_errors() {
RadrootsSdkError::from(
radroots_transport_nostr::RadrootsRelayTransportError::EmptyTargetSet
),
- RadrootsSdkError::EmptyTargetRelays { ref operation } if operation == "relay publish"
+ RadrootsSdkError::EmptyTransportTargets { ref operation } if operation == "nostr relay publish"
));
assert!(matches!(
RadrootsSdkError::from(
@@ -253,13 +253,13 @@ fn relay_transport_error_conversion_redacts_and_classifies_url_errors() {
RadrootsSdkError::from(radroots_transport_nostr::RadrootsRelayTransportError::Outbox(
radroots_outbox::RadrootsOutboxError::EmptyDeliveryTargets,
)),
- RadrootsSdkError::EmptyTargetRelays { ref operation } if operation == "outbox enqueue"
+ RadrootsSdkError::EmptyTransportTargets { ref operation } if operation == "outbox enqueue"
));
assert!(matches!(
RadrootsSdkError::from(radroots_transport_nostr::RadrootsRelayTransportError::Transport(
"offline".to_owned(),
)),
- RadrootsSdkError::RelayTransport { ref message } if message == "Relay transport error: offline"
+ RadrootsSdkError::Transport { ref message } if message == "Relay transport error: offline"
));
}
@@ -341,10 +341,10 @@ fn sdk_error_contract_methods_cover_representative_classes_and_details() {
operation: "listing.publish".to_owned(),
reason: "id changed".to_owned(),
},
- RadrootsSdkError::EmptyTargetRelays {
- operation: "relay publish".to_owned(),
+ RadrootsSdkError::EmptyTransportTargets {
+ operation: "nostr relay publish".to_owned(),
},
- RadrootsSdkError::RelayTargetLimitExceeded { max: 2, actual: 3 },
+ RadrootsSdkError::TransportTargetLimitExceeded { max: 2, actual: 3 },
RadrootsSdkError::invalid_relay_url(
"wss://user:secret@relay.example.com/path?token=secret",
"userinfo",
@@ -366,7 +366,7 @@ fn sdk_error_contract_methods_cover_representative_classes_and_details() {
operation: "sync.push_outbox",
required_feature: "relay-runtime",
},
- RadrootsSdkError::ProductSyncRelaySetupFailure {
+ RadrootsSdkError::ProductSyncTransportSetupFailure {
message: "offline".to_owned(),
},
RadrootsSdkError::Authority {
@@ -414,7 +414,7 @@ fn sdk_error_contract_methods_cover_representative_classes_and_details() {
kind: RadrootsSdkGeoNamesErrorKind::Lookup,
message: "lookup".to_owned(),
},
- RadrootsSdkError::RelayTransport {
+ RadrootsSdkError::Transport {
message: "transport".to_owned(),
},
RadrootsSdkError::Projection {
diff --git a/crates/sdk/tests/unit/farms_runtime_tests.rs b/crates/sdk/tests/unit/farms_runtime_tests.rs
@@ -169,13 +169,13 @@ fn farm_runtime_request_builders_and_serializers_cover_success_paths() {
farm(FARM_B_D_TAG, "Queued Farm"),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays([RELAY_A, RELAY_B], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets([RELAY_A, RELAY_B], NostrRelayUrlPolicy::Public)
.expect("relay targets")
.with_idempotency_key(SdkIdempotencyKey::new("farm-unit-key").expect("key"))
.with_created_at(created_at);
assert_struct_serialize_error_paths(&enqueue, 5);
let enqueue_json = serde_json::to_value(&enqueue).expect("enqueue json");
- assert_eq!(enqueue_json["target_relays"]["kind"], "explicit");
+ assert_eq!(enqueue_json["target_policy"]["kind"], "explicit");
assert_eq!(enqueue_json["created_at"], 1_700_000_321);
assert!(!enqueue_json.to_string().contains("farm-unit-key"));
@@ -359,7 +359,7 @@ fn farm_request_builders_reject_invalid_options_and_timestamp_bounds() {
farm(FARM_A_D_TAG, "Invalid Relay Farm"),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays(["http://relay.radroots.test"], NostrRelayUrlPolicy::Public);
+ .try_with_nostr_targets(["http://relay.radroots.test"], NostrRelayUrlPolicy::Public);
assert!(invalid_relays.is_err());
let invalid_key = FarmEnqueuePublishRequest::new(
@@ -532,7 +532,7 @@ async fn farm_enqueue_publish_reports_prepare_errors_before_signing() {
farmer_actor(),
farm("AAAAAAAAAAAAAAAAAAAAA!", "Invalid Enqueue Farm"),
TargetPolicy::try_nostr_relays([RELAY_A], NostrRelayUrlPolicy::Public)
- .expect("target relays"),
+ .expect("transport targets"),
),
&FixtureSigner::new(FARMER),
)
@@ -557,7 +557,7 @@ async fn farm_client_enqueue_methods_cover_source_attached_workflow_paths() {
actor.clone(),
farm(FARM_A_D_TAG, "Enqueued Farm"),
TargetPolicy::try_nostr_relays([RELAY_A], NostrRelayUrlPolicy::Public)
- .expect("target relays"),
+ .expect("transport targets"),
)
.try_with_idempotency_key("farm-source-attached-enqueue")
.expect("idempotency"),
@@ -581,7 +581,7 @@ async fn farm_client_enqueue_methods_cover_source_attached_workflow_paths() {
&actor,
plan,
TargetPolicy::try_nostr_relays([RELAY_B], NostrRelayUrlPolicy::Public)
- .expect("prepared target relays"),
+ .expect("prepared transport targets"),
None,
&signer,
)
@@ -613,7 +613,7 @@ async fn farm_configured_local_signer_enqueues_publish_without_explicit_signer()
actor,
farm(FARM_C_D_TAG, "Configured Farm"),
TargetPolicy::try_nostr_relays([RELAY_A], NostrRelayUrlPolicy::Public)
- .expect("target relays"),
+ .expect("transport targets"),
)
.try_with_idempotency_key("farm-configured-local")
.expect("idempotency"),
@@ -647,7 +647,7 @@ async fn farm_configured_enqueue_reports_prepare_and_signer_errors() {
actor.clone(),
farm("AAAAAAAAAAAAAAAAAAAAA!", "Invalid Configured Farm"),
TargetPolicy::try_nostr_relays([RELAY_A], NostrRelayUrlPolicy::Public)
- .expect("target relays"),
+ .expect("transport targets"),
))
.await,
Err(RadrootsSdkError::InvalidRequest { .. })
@@ -672,7 +672,7 @@ async fn farm_configured_enqueue_reports_prepare_and_signer_errors() {
&actor,
plan,
TargetPolicy::try_nostr_relays([RELAY_A], NostrRelayUrlPolicy::Public)
- .expect("target relays"),
+ .expect("transport targets"),
None,
)
.await,
diff --git a/crates/sdk/tests/unit/listings_runtime_tests.rs b/crates/sdk/tests/unit/listings_runtime_tests.rs
@@ -106,13 +106,13 @@ fn listing_runtime_request_builders_and_serializers_cover_success_paths() {
RadrootsListingDraftDocumentV1::new(listing(LISTING_B_D_TAG, "Queued Greens")),
TargetPolicy::UseConfiguredProfile,
)
- .try_with_target_relays([RELAY_A, RELAY_B], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets([RELAY_A, RELAY_B], NostrRelayUrlPolicy::Public)
.expect("relay targets")
.with_idempotency_key(SdkIdempotencyKey::new("listing-unit-key").expect("key"))
.with_created_at(created_at);
assert_struct_serialize_error_paths(&enqueue, 5);
let enqueue_json = serde_json::to_value(&enqueue).expect("enqueue json");
- assert_eq!(enqueue_json["target_relays"]["kind"], "explicit");
+ assert_eq!(enqueue_json["target_policy"]["kind"], "explicit");
assert_eq!(enqueue_json["created_at"], 1_700_000_321);
assert!(!enqueue_json.to_string().contains("listing-unit-key"));
@@ -236,7 +236,7 @@ async fn listing_enqueue_publish_reports_prepare_errors_before_signing() {
actor(),
listing(LISTING_A_D_TAG, "Future Enqueue Greens"),
TargetPolicy::try_nostr_relays([RELAY_A], NostrRelayUrlPolicy::Public)
- .expect("target relays"),
+ .expect("transport targets"),
)
.with_created_at(RadrootsSdkTimestamp::from_unix_seconds(u64::MAX)),
&FixtureSigner::new(SELLER),
@@ -265,7 +265,7 @@ async fn listing_client_enqueue_methods_cover_source_attached_workflow_paths() {
actor.clone(),
listing(LISTING_A_D_TAG, "Enqueued Greens"),
TargetPolicy::try_nostr_relays([RELAY_A], NostrRelayUrlPolicy::Public)
- .expect("target relays"),
+ .expect("transport targets"),
)
.try_with_idempotency_key("listing-source-attached-enqueue")
.expect("idempotency"),
@@ -289,7 +289,7 @@ async fn listing_client_enqueue_methods_cover_source_attached_workflow_paths() {
&actor,
plan,
TargetPolicy::try_nostr_relays([RELAY_B], NostrRelayUrlPolicy::Public)
- .expect("prepared target relays"),
+ .expect("prepared transport targets"),
None,
&signer,
)
@@ -321,7 +321,7 @@ async fn listing_configured_local_signer_enqueues_publish_without_explicit_signe
actor,
listing_for_seller(seller.as_str(), LISTING_C_D_TAG, "Configured Greens"),
TargetPolicy::try_nostr_relays([RELAY_A], NostrRelayUrlPolicy::Public)
- .expect("target relays"),
+ .expect("transport targets"),
)
.try_with_idempotency_key("listing-configured-local")
.expect("idempotency"),
@@ -348,7 +348,7 @@ async fn listing_configured_enqueue_reports_missing_signer_after_prepare() {
actor.clone(),
listing(LISTING_A_D_TAG, "Configured Prepare Error Greens"),
TargetPolicy::try_nostr_relays([RELAY_A], NostrRelayUrlPolicy::Public)
- .expect("target relays"),
+ .expect("transport targets"),
)
.with_created_at(RadrootsSdkTimestamp::from_unix_seconds(u64::MAX)),
)
@@ -369,7 +369,7 @@ async fn listing_configured_enqueue_reports_missing_signer_after_prepare() {
&actor,
plan,
TargetPolicy::try_nostr_relays([RELAY_A], NostrRelayUrlPolicy::Public)
- .expect("target relays"),
+ .expect("transport targets"),
None,
)
.await,
diff --git a/crates/sdk/tests/unit/orders_runtime_tests.rs b/crates/sdk/tests/unit/orders_runtime_tests.rs
@@ -411,8 +411,8 @@ fn fixture_cancellation(raw_order_id: &str) -> RadrootsOrderCancellation {
}
}
-fn fixture_target_relays() -> TargetPolicy {
- TargetPolicy::try_nostr_relays([RELAY], NostrRelayUrlPolicy::Public).expect("target relays")
+fn fixture_target_policy() -> TargetPolicy {
+ TargetPolicy::try_nostr_relays([RELAY], NostrRelayUrlPolicy::Public).expect("transport targets")
}
async fn prepared_order_sdk() -> RadrootsClient {
@@ -444,7 +444,7 @@ async fn order_configured_local_signer_enqueues_submit_without_explicit_signer()
fixture_buyer_actor(),
fixture_event_ptr('a'),
fixture_order_request("order-configured-local-1"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
))
@@ -465,7 +465,7 @@ async fn order_configured_local_signer_enqueues_lifecycle_wrappers_without_expli
fixture_seller_actor(),
fixture_order_event_ptr(&decision_submit.signed_event_id),
fixture_order_decision("order-configured-decision"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
))
@@ -487,7 +487,7 @@ async fn order_configured_local_signer_enqueues_lifecycle_wrappers_without_expli
fixture_order_event_ptr(&proposal_submit.signed_event_id),
fixture_order_event_ptr(&proposal_submit.signed_event_id),
proposal_payload,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
))
@@ -512,7 +512,7 @@ async fn order_configured_local_signer_enqueues_lifecycle_wrappers_without_expli
fixture_order_event_ptr(&revision_submit.signed_event_id),
fixture_order_event_ptr(&revision_submit.signed_event_id),
revision_proposal_payload.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
),
@@ -531,7 +531,7 @@ async fn order_configured_local_signer_enqueues_lifecycle_wrappers_without_expli
fixture_order_event_ptr(&revision_submit.signed_event_id),
fixture_order_event_ptr(&revision_proposal.signed_event_id),
revision_decision_payload,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
))
@@ -555,7 +555,7 @@ async fn order_configured_local_signer_enqueues_lifecycle_wrappers_without_expli
fixture_order_event_ptr(&cancel_submit.signed_event_id),
fixture_order_event_ptr(&cancel_submit.signed_event_id),
fixture_cancellation("order-configured-cancel"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
))
@@ -583,7 +583,7 @@ async fn enqueue_fixture_submit(sdk: &RadrootsClient, raw_order_id: &str) -> Tra
.enqueue_prepared_submit_with_explicit_signer(
&buyer,
plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2086,8 +2086,8 @@ fn order_enqueue_request_mutators_reject_invalid_relays_and_idempotency_keys() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays(Vec::<String>::new(), NostrRelayUrlPolicy::Public),
- "target relays",
+ .try_with_nostr_targets(Vec::<String>::new(), NostrRelayUrlPolicy::Public),
+ "transport targets",
);
assert_error_display(
TradeSubmitEnqueueRequest::new(
@@ -2111,8 +2111,8 @@ fn order_enqueue_request_mutators_reject_invalid_relays_and_idempotency_keys() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays(Vec::<String>::new(), NostrRelayUrlPolicy::Public),
- "target relays",
+ .try_with_nostr_targets(Vec::<String>::new(), NostrRelayUrlPolicy::Public),
+ "transport targets",
);
assert_error_display(
TradeDecisionEnqueueRequest::new(
@@ -2137,8 +2137,8 @@ fn order_enqueue_request_mutators_reject_invalid_relays_and_idempotency_keys() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays(Vec::<String>::new(), NostrRelayUrlPolicy::Public),
- "target relays",
+ .try_with_nostr_targets(Vec::<String>::new(), NostrRelayUrlPolicy::Public),
+ "transport targets",
);
assert_error_display(
TradeRevisionProposalEnqueueRequest::new(
@@ -2164,8 +2164,8 @@ fn order_enqueue_request_mutators_reject_invalid_relays_and_idempotency_keys() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays(Vec::<String>::new(), NostrRelayUrlPolicy::Public),
- "target relays",
+ .try_with_nostr_targets(Vec::<String>::new(), NostrRelayUrlPolicy::Public),
+ "transport targets",
);
assert_error_display(
TradeRevisionDecisionEnqueueRequest::new(
@@ -2191,8 +2191,8 @@ fn order_enqueue_request_mutators_reject_invalid_relays_and_idempotency_keys() {
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays(Vec::<String>::new(), NostrRelayUrlPolicy::Public),
- "target relays",
+ .try_with_nostr_targets(Vec::<String>::new(), NostrRelayUrlPolicy::Public),
+ "transport targets",
);
assert_error_display(
TradeCancellationEnqueueRequest::new(
@@ -2219,12 +2219,12 @@ fn trade_enqueue_policy_rejects_publish_modes_without_matching_side_effects() {
assert!(matches!(
validate_trade_enqueue_policy(PublishMode::EnqueueOnly, SatisfactionPolicy::AtLeastOneTarget),
Err(RadrootsSdkError::InvalidRequest { ref message })
- if message == "trade enqueue-only publish mode only supports no-wait acknowledgement"
+ if message == "trade enqueue-only publish mode only supports no-wait satisfaction"
));
assert!(matches!(
validate_trade_enqueue_policy(PublishMode::EnqueueAndPublish, SatisfactionPolicy::NoWait),
Err(RadrootsSdkError::InvalidRequest { ref message })
- if message == "trade enqueue-and-publish requires a relay acknowledgement policy"
+ if message == "trade enqueue-and-publish requires a transport satisfaction policy"
));
assert!(
validate_trade_enqueue_policy(PublishMode::EnqueueOnly, SatisfactionPolicy::NoWait).is_ok()
@@ -2350,7 +2350,7 @@ async fn prepared_submit_and_decision_enqueue_cover_source_attached_success_path
.enqueue_prepared_decision_with_explicit_signer(
&seller,
decision_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
Some(SdkIdempotencyKey::new("prepared-decision").expect("idempotency")),
@@ -2388,7 +2388,7 @@ async fn prepared_revision_lifecycle_enqueue_cover_source_attached_success_paths
.enqueue_prepared_revision_proposal_with_explicit_signer(
&seller,
proposal_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
Some(SdkIdempotencyKey::new("prepared-proposal").expect("idempotency")),
@@ -2418,7 +2418,7 @@ async fn prepared_revision_lifecycle_enqueue_cover_source_attached_success_paths
.enqueue_prepared_revision_decision_with_explicit_signer(
&buyer,
revision_decision_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2452,7 +2452,7 @@ async fn prepared_cancellation_enqueue_covers_source_attached_success_path() {
.enqueue_prepared_cancellation_with_explicit_signer(
&buyer,
cancellation_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
Some(SdkIdempotencyKey::new("prepared-cancellation").expect("idempotency")),
@@ -2477,7 +2477,7 @@ async fn convenience_order_enqueue_methods_cover_source_attached_wrappers() {
fixture_buyer_actor(),
fixture_event_ptr('b'),
fixture_order_request("order-wrapper-decision"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
),
@@ -2492,7 +2492,7 @@ async fn convenience_order_enqueue_methods_cover_source_attached_wrappers() {
fixture_seller_actor(),
fixture_order_event_ptr(&decision_submit.signed_event_id),
fixture_order_decision("order-wrapper-decision"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
),
@@ -2509,7 +2509,7 @@ async fn convenience_order_enqueue_methods_cover_source_attached_wrappers() {
fixture_buyer_actor(),
fixture_event_ptr('c'),
fixture_order_request("order-wrapper-revision"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
),
@@ -2530,7 +2530,7 @@ async fn convenience_order_enqueue_methods_cover_source_attached_wrappers() {
fixture_order_event_ptr(&revision_submit.signed_event_id),
fixture_order_event_ptr(&revision_submit.signed_event_id),
proposal_payload.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
),
@@ -2546,7 +2546,7 @@ async fn convenience_order_enqueue_methods_cover_source_attached_wrappers() {
fixture_order_event_ptr(&revision_submit.signed_event_id),
fixture_order_event_ptr(&proposal.signed_event_id),
fixture_revision_decision(&proposal_payload, &proposal.signed_event_id),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
),
@@ -2563,7 +2563,7 @@ async fn convenience_order_enqueue_methods_cover_source_attached_wrappers() {
fixture_buyer_actor(),
fixture_event_ptr('d'),
fixture_order_request("order-wrapper-cancellation"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
),
@@ -2579,7 +2579,7 @@ async fn convenience_order_enqueue_methods_cover_source_attached_wrappers() {
fixture_order_event_ptr(&cancellation_submit.signed_event_id),
fixture_order_event_ptr(&cancellation_submit.signed_event_id),
fixture_cancellation("order-wrapper-cancellation"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
),
@@ -2618,7 +2618,7 @@ async fn prepared_lifecycle_enqueues_report_missing_and_closed_preflight_errors(
.enqueue_prepared_decision_with_explicit_signer(
&seller,
decision_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2645,7 +2645,7 @@ async fn prepared_lifecycle_enqueues_report_missing_and_closed_preflight_errors(
.enqueue_prepared_revision_proposal_with_explicit_signer(
&seller,
proposal_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2672,7 +2672,7 @@ async fn prepared_lifecycle_enqueues_report_missing_and_closed_preflight_errors(
.enqueue_prepared_revision_decision_with_explicit_signer(
&buyer,
revision_decision_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2699,7 +2699,7 @@ async fn prepared_lifecycle_enqueues_report_missing_and_closed_preflight_errors(
.enqueue_prepared_cancellation_with_explicit_signer(
&buyer,
cancellation_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2763,7 +2763,7 @@ async fn prepared_lifecycle_enqueues_report_missing_and_closed_preflight_errors(
.enqueue_prepared_decision_with_explicit_signer(
&seller,
closed_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2777,7 +2777,7 @@ async fn prepared_lifecycle_enqueues_report_missing_and_closed_preflight_errors(
.enqueue_prepared_revision_proposal_with_explicit_signer(
&seller,
closed_proposal_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2794,7 +2794,7 @@ async fn prepared_lifecycle_enqueues_report_missing_and_closed_preflight_errors(
.enqueue_prepared_revision_decision_with_explicit_signer(
&buyer,
closed_revision_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2811,7 +2811,7 @@ async fn prepared_lifecycle_enqueues_report_missing_and_closed_preflight_errors(
.enqueue_prepared_cancellation_with_explicit_signer(
&buyer,
closed_cancellation_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2853,7 +2853,7 @@ async fn configured_prepared_lifecycle_enqueues_run_preflight_guards() {
.enqueue_prepared_decision(
&seller,
decision_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2879,7 +2879,7 @@ async fn configured_prepared_lifecycle_enqueues_run_preflight_guards() {
.enqueue_prepared_revision_proposal(
&seller,
proposal_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2906,7 +2906,7 @@ async fn configured_prepared_lifecycle_enqueues_run_preflight_guards() {
.enqueue_prepared_revision_decision(
&buyer,
revision_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2932,7 +2932,7 @@ async fn configured_prepared_lifecycle_enqueues_run_preflight_guards() {
.enqueue_prepared_cancellation(
&buyer,
cancellation_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -2984,7 +2984,7 @@ async fn configured_prepared_lifecycle_enqueues_report_existing_event_lookup_err
.enqueue_prepared_decision(
&seller,
decision_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None
@@ -2998,7 +2998,7 @@ async fn configured_prepared_lifecycle_enqueues_report_existing_event_lookup_err
.enqueue_prepared_revision_proposal(
&seller,
proposal_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3033,7 +3033,7 @@ async fn configured_prepared_lifecycle_enqueues_report_existing_event_lookup_err
.enqueue_prepared_revision_decision(
&buyer,
revision_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None
@@ -3047,7 +3047,7 @@ async fn configured_prepared_lifecycle_enqueues_report_existing_event_lookup_err
.enqueue_prepared_cancellation(
&buyer,
cancellation_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None
@@ -3076,7 +3076,7 @@ async fn configured_enqueue_wrappers_report_prepare_errors_before_signing() {
fixture_seller_actor(),
fixture_event_ptr('a'),
fixture_order_request("order-configured-prepare-submit"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
))
@@ -3090,7 +3090,7 @@ async fn configured_enqueue_wrappers_report_prepare_errors_before_signing() {
fixture_buyer_actor(),
fixture_event_ptr('a'),
fixture_order_decision("order-configured-prepare-decision"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
))
@@ -3105,7 +3105,7 @@ async fn configured_enqueue_wrappers_report_prepare_errors_before_signing() {
fixture_order_event_ptr(&root_event_id),
fixture_order_event_ptr(&previous_event_id),
proposal.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
))
@@ -3120,7 +3120,7 @@ async fn configured_enqueue_wrappers_report_prepare_errors_before_signing() {
fixture_order_event_ptr(&root_event_id),
fixture_order_event_ptr(&previous_event_id),
fixture_revision_decision(&proposal, &previous_event_id),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
))
@@ -3135,7 +3135,7 @@ async fn configured_enqueue_wrappers_report_prepare_errors_before_signing() {
fixture_order_event_ptr(&root_event_id),
fixture_order_event_ptr(&previous_event_id),
fixture_cancellation("order-configured-prepare-cancel"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
))
@@ -3163,7 +3163,7 @@ async fn configured_prepared_methods_report_missing_configured_signer_after_pref
.enqueue_prepared_submit(
&buyer,
submit_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None
@@ -3186,7 +3186,7 @@ async fn configured_prepared_methods_report_missing_configured_signer_after_pref
.enqueue_prepared_decision(
&seller,
decision_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None
@@ -3215,7 +3215,7 @@ async fn configured_prepared_methods_report_missing_configured_signer_after_pref
.enqueue_prepared_revision_proposal(
&seller,
proposal_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None
@@ -3244,7 +3244,7 @@ async fn configured_prepared_methods_report_missing_configured_signer_after_pref
.enqueue_prepared_revision_proposal_with_explicit_signer(
&seller,
revision_proposal_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3269,7 +3269,7 @@ async fn configured_prepared_methods_report_missing_configured_signer_after_pref
.enqueue_prepared_revision_decision(
&buyer,
revision_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None
@@ -3293,7 +3293,7 @@ async fn configured_prepared_methods_report_missing_configured_signer_after_pref
.enqueue_prepared_cancellation(
&buyer,
cancellation_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None
@@ -3403,7 +3403,7 @@ async fn prepared_lifecycle_enqueues_report_closed_outbox_after_preflight() {
.enqueue_prepared_revision_proposal_with_explicit_signer(
&seller,
proposal_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3439,7 +3439,7 @@ async fn prepared_lifecycle_enqueues_report_closed_outbox_after_preflight() {
.enqueue_prepared_revision_proposal_with_explicit_signer(
&seller,
proposal_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3464,7 +3464,7 @@ async fn prepared_lifecycle_enqueues_report_closed_outbox_after_preflight() {
.enqueue_prepared_revision_decision_with_explicit_signer(
&buyer,
revision_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3497,7 +3497,7 @@ async fn prepared_lifecycle_enqueues_report_closed_outbox_after_preflight() {
.enqueue_prepared_cancellation_with_explicit_signer(
&buyer,
cancellation_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3530,7 +3530,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_decision_with_explicit_signer(
&seller,
decision_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3543,7 +3543,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_decision_with_explicit_signer(
&seller,
decision_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3566,7 +3566,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_decision(
&seller,
decision_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3605,7 +3605,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_revision_proposal_with_explicit_signer(
&seller,
proposal_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3618,7 +3618,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_revision_proposal_with_explicit_signer(
&seller,
proposal_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3641,7 +3641,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_revision_proposal(
&seller,
proposal_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3680,7 +3680,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_revision_proposal_with_explicit_signer(
&seller,
proposal_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3703,7 +3703,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_revision_decision_with_explicit_signer(
&buyer,
revision_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3716,7 +3716,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_revision_decision_with_explicit_signer(
&buyer,
revision_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3739,7 +3739,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_revision_decision(
&buyer,
revision_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3774,7 +3774,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_cancellation_with_explicit_signer(
&buyer,
cancellation_plan.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3787,7 +3787,7 @@ async fn prepared_lifecycle_enqueues_skip_preflight_for_existing_events() {
.enqueue_prepared_cancellation(
&buyer,
cancellation_plan,
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
None,
@@ -3837,7 +3837,7 @@ async fn order_ingest_and_enqueue_wrappers_report_prepare_timestamp_errors() {
buyer.clone(),
fixture_event_ptr('a'),
fixture_order_request("order-wrapper-submit-error"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
@@ -3854,7 +3854,7 @@ async fn order_ingest_and_enqueue_wrappers_report_prepare_timestamp_errors() {
seller.clone(),
fixture_event_ptr('b'),
fixture_order_decision("order-wrapper-decision-error"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
@@ -3880,7 +3880,7 @@ async fn order_ingest_and_enqueue_wrappers_report_prepare_timestamp_errors() {
ptr(root_event_id.as_str().to_owned()),
ptr(previous_event_id.as_str().to_owned()),
proposal_payload.clone(),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
@@ -3898,7 +3898,7 @@ async fn order_ingest_and_enqueue_wrappers_report_prepare_timestamp_errors() {
ptr(root_event_id.as_str().to_owned()),
ptr(previous_event_id.as_str().to_owned()),
fixture_revision_decision(&proposal_payload, &previous_event_id),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
@@ -3916,7 +3916,7 @@ async fn order_ingest_and_enqueue_wrappers_report_prepare_timestamp_errors() {
ptr(root_event_id.as_str().to_owned()),
ptr(previous_event_id.as_str().to_owned()),
fixture_cancellation("order-wrapper-cancellation-error"),
- fixture_target_relays(),
+ fixture_target_policy(),
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
@@ -4048,7 +4048,7 @@ fn order_runtime_request_builders_and_serializers_cover_source_attached_paths()
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays(["wss://relay-a.radroots.test"], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets(["wss://relay-a.radroots.test"], NostrRelayUrlPolicy::Public)
.expect("submit relays")
.with_idempotency_key(SdkIdempotencyKey::new("submit-unit-key").expect("key"))
.with_created_at(created_at);
@@ -4077,7 +4077,7 @@ fn order_runtime_request_builders_and_serializers_cover_source_attached_paths()
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays(["wss://relay-b.radroots.test"], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets(["wss://relay-b.radroots.test"], NostrRelayUrlPolicy::Public)
.expect("decision relays")
.with_idempotency_key(SdkIdempotencyKey::new("decision-unit-key").expect("key"))
.with_created_at(created_at);
@@ -4101,7 +4101,7 @@ fn order_runtime_request_builders_and_serializers_cover_source_attached_paths()
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays(["wss://relay-c.radroots.test"], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets(["wss://relay-c.radroots.test"], NostrRelayUrlPolicy::Public)
.expect("proposal relays")
.with_idempotency_key(SdkIdempotencyKey::new("proposal-unit-key").expect("key"))
.with_created_at(created_at);
@@ -4125,7 +4125,7 @@ fn order_runtime_request_builders_and_serializers_cover_source_attached_paths()
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays(["wss://relay-d.radroots.test"], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets(["wss://relay-d.radroots.test"], NostrRelayUrlPolicy::Public)
.expect("revision decision relays")
.with_idempotency_key(SdkIdempotencyKey::new("revision-decision-unit-key").expect("key"))
.with_created_at(created_at);
@@ -4149,7 +4149,7 @@ fn order_runtime_request_builders_and_serializers_cover_source_attached_paths()
PublishMode::EnqueueOnly,
SatisfactionPolicy::NoWait,
)
- .try_with_target_relays(["wss://relay-e.radroots.test"], NostrRelayUrlPolicy::Public)
+ .try_with_nostr_targets(["wss://relay-e.radroots.test"], NostrRelayUrlPolicy::Public)
.expect("cancellation relays")
.with_idempotency_key(SdkIdempotencyKey::new("cancellation-unit-key").expect("key"))
.with_created_at(created_at);
diff --git a/crates/sdk/tests/unit/runtime_tests.rs b/crates/sdk/tests/unit/runtime_tests.rs
@@ -86,7 +86,7 @@ fn storage_status() -> StorageStatusReceipt {
store: sqlite_status(),
total_events: 0,
projection_eligible_events: 0,
- relay_observations: 0,
+ transport_observations: 0,
last_event_seq: None,
last_event_updated_at_ms: None,
},
@@ -264,7 +264,7 @@ async fn private_store_validates_location_rows_and_round_trips_valid_records() {
}
#[test]
-fn publish_transport_defaults_and_delegated_resolution_are_explicit() {
+fn transport_profile_defaults_and_delegated_resolution_are_explicit() {
let local = TransportProfile::default();
assert_eq!(local, TransportProfile::LocalOnly);
assert!(!local.supports_delegated_target_resolution());
diff --git a/crates/sdk/tests/unit/sync_runtime_tests.rs b/crates/sdk/tests/unit/sync_runtime_tests.rs
@@ -5,7 +5,7 @@ use super::{
push_proxy_claimed_outbox_event,
};
use super::{
- PushOutboxEventReceipt, PushOutboxEventState, PushOutboxReceipt, PushOutboxRelayOutcomeKind,
+ PushOutboxEventReceipt, PushOutboxEventState, PushOutboxReceipt, PushOutboxTargetOutcomeKind,
SdkRelayAuthPolicy, SyncEventStoreStatus, SyncOutboxStatus, push_event_final_state,
push_event_receipt, push_outbox_claim_token,
};
@@ -142,7 +142,7 @@ async fn claimed_proxy_event(d_tag: &str) -> (crate::RadrootsClient, RadrootsOut
operation_kind: "sync.proxy.unit.v1",
actor: &actor,
frozen_draft: &draft,
- target_relays: crate::TargetPolicy::try_nostr_relays(
+ target_policy: crate::TargetPolicy::try_nostr_relays(
["wss://relay.example.com"],
crate::NostrRelayUrlPolicy::Public,
)
@@ -191,8 +191,10 @@ fn push_event_receipt_parses_typed_event_id() {
receipt.event_id,
RadrootsEventId::parse(event_id).expect("event id")
);
- assert_eq!(receipt.relays.len(), 1);
- assert!(receipt.relays[0].attempted);
+ assert_eq!(receipt.targets.len(), 1);
+ assert_eq!(receipt.targets[0].transport_kind, "nostr");
+ assert_eq!(receipt.targets[0].endpoint_uri, "wss://relay.example.com");
+ assert!(receipt.targets[0].attempted);
}
#[test]
@@ -231,24 +233,24 @@ fn push_event_final_state_follows_publish_quorum_and_retryability() {
#[test]
fn push_relay_outcome_mapping_covers_daemon_proxy_results() {
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::Muted),
- PushOutboxRelayOutcomeKind::Muted
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::Muted),
+ PushOutboxTargetOutcomeKind::Muted
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::Unsupported),
- PushOutboxRelayOutcomeKind::Unsupported
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::Unsupported),
+ PushOutboxTargetOutcomeKind::Unsupported
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::PaymentRequired),
- PushOutboxRelayOutcomeKind::PaymentRequired
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::PaymentRequired),
+ PushOutboxTargetOutcomeKind::PaymentRequired
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::RelayUrlRejected),
- PushOutboxRelayOutcomeKind::RelayUrlRejected
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::RelayUrlRejected),
+ PushOutboxTargetOutcomeKind::TargetUriRejected
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::SkippedAlreadyAccepted),
- PushOutboxRelayOutcomeKind::SkippedAlreadyAccepted
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::SkippedAlreadyAccepted),
+ PushOutboxTargetOutcomeKind::SkippedAlreadyAccepted
);
}
@@ -319,7 +321,7 @@ fn sync_status_summary_conversions_preserve_all_fields() {
let event_status = SyncEventStoreStatus::from(event_summary);
assert_eq!(event_status.total_events, 11);
assert_eq!(event_status.projection_eligible_events, 7);
- assert_eq!(event_status.relay_observations, 3);
+ assert_eq!(event_status.transport_observations, 3);
assert_eq!(event_status.last_event_seq, Some(9));
assert_eq!(
event_status.last_event_updated_at_ms,
@@ -354,16 +356,14 @@ fn push_outbox_request_builders_validate_all_bounds() {
let request = super::PushOutboxRequest::new()
.with_limit(2)
.with_outbox_event_id(9)
- .republish_accepted_relays(true)
- .with_accepted_quorum(2)
- .with_relay_url_policy(crate::NostrRelayUrlPolicy::Localhost)
+ .republish_accepted_targets(true)
+ .with_nostr_relay_url_policy(crate::NostrRelayUrlPolicy::Localhost)
.with_auth_policy(SdkRelayAuthPolicy::DetectOnly)
.with_claim_ttl_ms(7)
.with_next_attempt_delay_ms(11);
assert_eq!(request.limit, 1);
assert_eq!(request.outbox_event_id, Some(9));
- assert!(request.republish_accepted_relays);
- assert_eq!(request.accepted_quorum, Some(2));
+ assert!(request.republish_accepted_targets);
request.validate().expect("valid request");
assert!(matches!(
@@ -378,12 +378,6 @@ fn push_outbox_request_builders_validate_all_bounds() {
));
assert!(matches!(
super::PushOutboxRequest::new()
- .with_accepted_quorum(0)
- .validate(),
- Err(RadrootsSdkError::InvalidRequest { message }) if message.contains("accepted quorum")
- ));
- assert!(matches!(
- super::PushOutboxRequest::new()
.with_outbox_event_id(0)
.validate(),
Err(RadrootsSdkError::InvalidRequest { message }) if message.contains("outbox event id")
@@ -405,52 +399,52 @@ fn push_outbox_request_builders_validate_all_bounds() {
#[test]
fn relay_outcome_kind_mapping_covers_all_transport_outcomes() {
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::Accepted),
- PushOutboxRelayOutcomeKind::Accepted
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::Accepted),
+ PushOutboxTargetOutcomeKind::Accepted
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::DuplicateAccepted),
- PushOutboxRelayOutcomeKind::DuplicateAccepted
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::DuplicateAccepted),
+ PushOutboxTargetOutcomeKind::DuplicateAccepted
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::Blocked),
- PushOutboxRelayOutcomeKind::Blocked
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::Blocked),
+ PushOutboxTargetOutcomeKind::Blocked
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::RateLimited),
- PushOutboxRelayOutcomeKind::RateLimited
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::RateLimited),
+ PushOutboxTargetOutcomeKind::RateLimited
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::Invalid),
- PushOutboxRelayOutcomeKind::Invalid
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::Invalid),
+ PushOutboxTargetOutcomeKind::Invalid
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::PowRequired),
- PushOutboxRelayOutcomeKind::PowRequired
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::PowRequired),
+ PushOutboxTargetOutcomeKind::PowRequired
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::Restricted),
- PushOutboxRelayOutcomeKind::Restricted
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::Restricted),
+ PushOutboxTargetOutcomeKind::Restricted
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::AuthRequired),
- PushOutboxRelayOutcomeKind::AuthRequired
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::AuthRequired),
+ PushOutboxTargetOutcomeKind::AuthRequired
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::Error),
- PushOutboxRelayOutcomeKind::Error
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::Error),
+ PushOutboxTargetOutcomeKind::Error
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::Timeout),
- PushOutboxRelayOutcomeKind::Timeout
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::Timeout),
+ PushOutboxTargetOutcomeKind::Timeout
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::ConnectionFailed),
- PushOutboxRelayOutcomeKind::ConnectionFailed
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::ConnectionFailed),
+ PushOutboxTargetOutcomeKind::ConnectionFailed
);
assert_eq!(
- PushOutboxRelayOutcomeKind::from(RadrootsRelayOutcomeKind::Unknown),
- PushOutboxRelayOutcomeKind::Unknown
+ PushOutboxTargetOutcomeKind::from(RadrootsRelayOutcomeKind::Unknown),
+ PushOutboxTargetOutcomeKind::Unknown
);
}
@@ -619,7 +613,7 @@ async fn proxy_push_reports_missing_signed_claim_before_daemon_publish() {
assert!(matches!(
push_proxy_claimed_outbox_event(&sync, &adapter, &claimed, 60_000, 1_700_000_000_000)
.await,
- Err(RadrootsSdkError::RelayTransport { message })
+ Err(RadrootsSdkError::Transport { message })
if message.contains("Outbox claim 41 does not contain a signed event")
));
}
@@ -755,6 +749,6 @@ fn push_receipt(final_state: PushOutboxEventState) -> PushOutboxEventReceipt {
terminal_count: 0,
quorum: 0,
quorum_met: false,
- relays: Vec::new(),
+ targets: Vec::new(),
}
}
diff --git a/crates/sdk/tests/unit/transport_tests.rs b/crates/sdk/tests/unit/transport_tests.rs
@@ -82,12 +82,12 @@ fn use_configured_policy_serializes_as_kind_only() {
);
assert_struct_serialize_error_paths(&policy, 1);
- let publish_transport_policy = TargetPolicy::use_transport_profile();
+ let transport_profile_policy = TargetPolicy::use_transport_profile();
assert_eq!(
- serde_json::to_value(&publish_transport_policy).expect("json"),
+ serde_json::to_value(&transport_profile_policy).expect("json"),
serde_json::json!({ "kind": "use_transport_profile" })
);
- assert_struct_serialize_error_paths(&publish_transport_policy, 1);
+ assert_struct_serialize_error_paths(&transport_profile_policy, 1);
}
#[test]
@@ -174,7 +174,7 @@ fn target_set_accessors_and_configured_relays_cover_empty_and_dedupe_paths() {
fn normalized_relays_reject_empty_and_over_limit_sets() {
assert!(matches!(
TargetSet::from_normalized_nostr_relays(Vec::new()),
- Err(RadrootsSdkError::EmptyTargetRelays { .. })
+ Err(RadrootsSdkError::EmptyTransportTargets { .. })
));
let too_many = (0..=SDK_TRANSPORT_TARGET_MAX_COUNT)
@@ -182,7 +182,7 @@ fn normalized_relays_reject_empty_and_over_limit_sets() {
.collect::<Vec<_>>();
assert!(matches!(
TargetSet::from_normalized_nostr_relays(too_many),
- Err(RadrootsSdkError::RelayTargetLimitExceeded { actual, .. })
+ Err(RadrootsSdkError::TransportTargetLimitExceeded { actual, .. })
if actual == SDK_TRANSPORT_TARGET_MAX_COUNT + 1
));
}
diff --git a/crates/sdk/tests/unit/workflow_runtime_tests.rs b/crates/sdk/tests/unit/workflow_runtime_tests.rs
@@ -170,7 +170,7 @@ async fn enqueue_signed_workflow_stores_signed_event_and_reports_idempotency_con
operation_kind: "workflow.test.v1",
actor: &actor,
frozen_draft: &first_draft,
- target_relays: TargetPolicy::UseConfiguredProfile,
+ target_policy: TargetPolicy::UseConfiguredProfile,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key: Some(idempotency_key.clone()),
},
@@ -211,7 +211,7 @@ async fn enqueue_signed_workflow_stores_signed_event_and_reports_idempotency_con
operation_kind: "workflow.test.v1",
actor: &actor,
frozen_draft: &second_draft,
- target_relays: TargetPolicy::UseConfiguredProfile,
+ target_policy: TargetPolicy::UseConfiguredProfile,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key: Some(idempotency_key),
},
@@ -274,7 +274,7 @@ async fn enqueue_configured_signed_workflow_uses_sdk_signer_provider() {
operation_kind: "workflow.test.v1",
actor: &actor,
frozen_draft: &draft,
- target_relays: TargetPolicy::UseConfiguredProfile,
+ target_policy: TargetPolicy::UseConfiguredProfile,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key: None,
},
@@ -309,7 +309,7 @@ async fn enqueue_signed_workflow_reports_outbox_preflight_failure_without_mutati
operation_kind: "workflow.test.v1",
actor: &actor,
frozen_draft: &draft,
- target_relays: TargetPolicy::UseConfiguredProfile,
+ target_policy: TargetPolicy::UseConfiguredProfile,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key: None,
};
@@ -345,7 +345,7 @@ async fn enqueue_signed_workflow_reports_store_failures() {
operation_kind: "workflow.test.v1",
actor: &actor,
frozen_draft: &draft,
- target_relays: TargetPolicy::UseConfiguredProfile,
+ target_policy: TargetPolicy::UseConfiguredProfile,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key: None,
};
@@ -375,7 +375,7 @@ async fn enqueue_signed_workflow_reports_clock_failures() {
operation_kind: "workflow.test.v1",
actor: &actor,
frozen_draft: &draft,
- target_relays: TargetPolicy::UseConfiguredProfile,
+ target_policy: TargetPolicy::UseConfiguredProfile,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key: None,
};
@@ -386,7 +386,7 @@ async fn enqueue_signed_workflow_reports_clock_failures() {
}
#[tokio::test]
-async fn enqueue_signed_workflow_rejects_publish_transport_targets_without_proxy_transport() {
+async fn enqueue_signed_workflow_rejects_transport_profile_targets_without_proxy_transport() {
let sdk = crate::RadrootsClient::builder().build().await.expect("sdk");
let actor = RadrootsActorContext::test(FARMER_PUBLIC_KEY_HEX, [RadrootsActorRole::Farmer])
.expect("actor");
@@ -395,14 +395,14 @@ async fn enqueue_signed_workflow_rejects_publish_transport_targets_without_proxy
operation_kind: "workflow.test.v1",
actor: &actor,
frozen_draft: &draft,
- target_relays: TargetPolicy::UseTransportProfile,
+ target_policy: TargetPolicy::UseTransportProfile,
satisfaction_policy: SatisfactionPolicy::AllTargets,
idempotency_key: None,
};
assert!(matches!(
enqueue_signed_workflow(&sdk, request, &WorkflowSigner::new()).await,
- Err(RadrootsSdkError::EmptyTargetRelays { operation })
+ Err(RadrootsSdkError::EmptyTransportTargets { operation })
if operation == "publish transport profile"
));
}