commit bde62f3210d42b006cae01cf7ee63f959ccb4dc1
parent 471e21ca5e1480697ca18b1c77078ca73a705051
Author: triesap <tyson@radroots.org>
Date: Fri, 12 Jun 2026 19:48:50 -0700
app: align order event consumer APIs
- switch app sync, store interop, view, and desktop runtime code to canonical rr-rs order names
- update source guards to expect the renamed order kind constants while preserving numeric v1 kinds
- keep app order workflow behavior unchanged across direct relay, shared local events, and reducer projections
- verify with cargo metadata, fmt, check, cargo test, stale-symbol scan, and scripts/check.sh
Diffstat:
5 files changed, 677 insertions(+), 748 deletions(-)
diff --git a/crates/desktop/src/runtime.rs b/crates/desktop/src/runtime.rs
@@ -66,14 +66,14 @@ use radroots_core::{
RadrootsCoreQuantityPrice, RadrootsCoreUnit,
};
use radroots_events::kinds::{
- KIND_FARM, KIND_LISTING, KIND_LISTING_DRAFT, KIND_PROFILE, KIND_TRADE_CANCEL,
- KIND_TRADE_FULFILLMENT_UPDATE, KIND_TRADE_ORDER_DECISION, KIND_TRADE_ORDER_REQUEST,
- KIND_TRADE_ORDER_REVISION, KIND_TRADE_ORDER_REVISION_RESPONSE, KIND_TRADE_PAYMENT_RECORDED,
- KIND_TRADE_RECEIPT, KIND_TRADE_SETTLEMENT_DECISION,
+ KIND_FARM, KIND_LISTING, KIND_LISTING_DRAFT, KIND_ORDER_CANCELLATION, KIND_ORDER_DECISION,
+ KIND_ORDER_FULFILLMENT_UPDATE, KIND_ORDER_PAYMENT_RECORD, KIND_ORDER_RECEIPT,
+ KIND_ORDER_REQUEST, KIND_ORDER_REVISION_DECISION, KIND_ORDER_REVISION_PROPOSAL,
+ KIND_ORDER_SETTLEMENT_DECISION, KIND_PROFILE,
};
-use radroots_events_codec::trade::{
- active_trade_event_context_from_tags, active_trade_payment_recorded_from_event,
- active_trade_settlement_decision_from_event,
+use radroots_events_codec::order::{
+ order_event_context_from_tags, order_payment_record_from_event,
+ order_settlement_decision_from_event,
};
use radroots_identity::{RadrootsIdentity, RadrootsIdentityId};
use radroots_local_events::{
@@ -95,12 +95,12 @@ use radroots_sdk::listing::{
RadrootsListingDeliveryMethod, RadrootsListingLocation, RadrootsListingProduct,
RadrootsListingStatus,
};
-use radroots_sdk::trade::{
- RadrootsActiveTradeFulfillmentState, RadrootsTradeBuyerReceipt,
- RadrootsTradeFulfillmentUpdated, RadrootsTradeInventoryCommitment, RadrootsTradeOrderCancelled,
- RadrootsTradeOrderDecision, RadrootsTradeOrderDecisionEvent, RadrootsTradeOrderEconomics,
- RadrootsTradeOrderItem, RadrootsTradeOrderRequested, RadrootsTradeOrderRevisionDecision,
- RadrootsTradeOrderRevisionDecisionEvent, RadrootsTradeOrderRevisionProposed,
+use radroots_sdk::order::{
+ RadrootsOrderCancellation, RadrootsOrderDecision, RadrootsOrderDecisionOutcome,
+ RadrootsOrderEconomics, RadrootsOrderFulfillmentState, RadrootsOrderFulfillmentUpdate,
+ RadrootsOrderInventoryCommitment, RadrootsOrderItem, RadrootsOrderReceipt,
+ RadrootsOrderRequest, RadrootsOrderRevisionDecision, RadrootsOrderRevisionOutcome,
+ RadrootsOrderRevisionProposal,
};
use radroots_sdk::{
RadrootsNostrEventPtr, RadrootsSdkClient, RadrootsSdkConfig, RelayConfig, SdkEnvironment,
@@ -108,12 +108,11 @@ use radroots_sdk::{
};
use radroots_sql_core::SqliteExecutor;
use radroots_trade::order::{
- RadrootsActiveOrderCancellationRecord, RadrootsActiveOrderDecisionRecord,
- RadrootsActiveOrderFulfillmentRecord, RadrootsActiveOrderPaymentRecord,
- RadrootsActiveOrderPaymentState, RadrootsActiveOrderReceiptRecord,
- RadrootsActiveOrderRequestRecord, RadrootsActiveOrderRevisionDecisionRecord,
- RadrootsActiveOrderRevisionProposalRecord, RadrootsActiveOrderSettlementRecord,
- RadrootsActiveOrderStatus, reduce_active_order_events,
+ RadrootsOrderCancellationRecord, RadrootsOrderDecisionRecord, RadrootsOrderFulfillmentRecord,
+ RadrootsOrderPaymentEventRecord, RadrootsOrderPaymentState, RadrootsOrderReceiptRecord,
+ RadrootsOrderRequestRecord, RadrootsOrderRevisionDecisionRecord,
+ RadrootsOrderRevisionProposalRecord, RadrootsOrderSettlementRecord, RadrootsOrderStatus,
+ reduce_order_events,
};
use serde_json::json;
use thiserror::Error;
@@ -156,15 +155,15 @@ const APP_DIRECT_RELAY_INGEST_KINDS: &[u16] = &[
KIND_FARM as u16,
KIND_LISTING as u16,
KIND_LISTING_DRAFT as u16,
- KIND_TRADE_ORDER_REQUEST as u16,
- KIND_TRADE_ORDER_DECISION as u16,
- KIND_TRADE_ORDER_REVISION as u16,
- KIND_TRADE_ORDER_REVISION_RESPONSE as u16,
- KIND_TRADE_CANCEL as u16,
- KIND_TRADE_FULFILLMENT_UPDATE as u16,
- KIND_TRADE_RECEIPT as u16,
- KIND_TRADE_PAYMENT_RECORDED as u16,
- KIND_TRADE_SETTLEMENT_DECISION as u16,
+ KIND_ORDER_REQUEST as u16,
+ KIND_ORDER_DECISION as u16,
+ KIND_ORDER_REVISION_PROPOSAL as u16,
+ KIND_ORDER_REVISION_DECISION as u16,
+ KIND_ORDER_CANCELLATION as u16,
+ KIND_ORDER_FULFILLMENT_UPDATE as u16,
+ KIND_ORDER_RECEIPT as u16,
+ KIND_ORDER_PAYMENT_RECORD as u16,
+ KIND_ORDER_SETTLEMENT_DECISION as u16,
];
#[derive(Debug, Default)]
@@ -213,37 +212,37 @@ struct ResolvedAppSellerOrderRequest {
request_event_id: String,
request_author_pubkey: String,
listing_event_id: Option<String>,
- payload: RadrootsTradeOrderRequested,
+ payload: RadrootsOrderRequest,
}
#[derive(Clone, Debug, Eq, PartialEq)]
struct ResolvedAppOrderDecisionEvidence {
event_id: String,
- payload: RadrootsTradeOrderDecisionEvent,
+ payload: RadrootsOrderDecision,
}
#[derive(Clone, Debug, Eq, PartialEq)]
struct ResolvedAppOrderRevisionProposalEvidence {
event_id: String,
- payload: RadrootsTradeOrderRevisionProposed,
+ payload: RadrootsOrderRevisionProposal,
}
#[derive(Clone, Debug, Eq, PartialEq)]
struct ResolvedAppOrderRevisionDecisionEvidence {
event_id: String,
- payload: RadrootsTradeOrderRevisionDecisionEvent,
+ payload: RadrootsOrderRevisionDecision,
}
#[derive(Clone, Debug, Eq, PartialEq)]
struct ResolvedAppOrderFulfillmentEvidence {
event_id: String,
- status: RadrootsActiveTradeFulfillmentState,
+ status: RadrootsOrderFulfillmentState,
}
#[derive(Clone, Debug, Eq, PartialEq)]
struct ResolvedAppOrderLifecycleEvidence {
- status: RadrootsActiveOrderStatus,
- payment_state: RadrootsActiveOrderPaymentState,
+ status: RadrootsOrderStatus,
+ payment_state: RadrootsOrderPaymentState,
agreement_event_id: Option<String>,
last_event_id: Option<String>,
decision: Option<ResolvedAppOrderDecisionEvidence>,
@@ -256,15 +255,15 @@ struct ResolvedAppOrderLifecycleEvidence {
#[derive(Clone, Debug, Default, Eq, PartialEq)]
struct AppActiveOrderEvidenceBuckets {
- requests: Vec<RadrootsActiveOrderRequestRecord>,
- decisions: Vec<RadrootsActiveOrderDecisionRecord>,
- revision_proposals: Vec<RadrootsActiveOrderRevisionProposalRecord>,
- revision_decisions: Vec<RadrootsActiveOrderRevisionDecisionRecord>,
- fulfillments: Vec<RadrootsActiveOrderFulfillmentRecord>,
- cancellations: Vec<RadrootsActiveOrderCancellationRecord>,
- receipts: Vec<RadrootsActiveOrderReceiptRecord>,
- payments: Vec<RadrootsActiveOrderPaymentRecord>,
- settlements: Vec<RadrootsActiveOrderSettlementRecord>,
+ requests: Vec<RadrootsOrderRequestRecord>,
+ decisions: Vec<RadrootsOrderDecisionRecord>,
+ revision_proposals: Vec<RadrootsOrderRevisionProposalRecord>,
+ revision_decisions: Vec<RadrootsOrderRevisionDecisionRecord>,
+ fulfillments: Vec<RadrootsOrderFulfillmentRecord>,
+ cancellations: Vec<RadrootsOrderCancellationRecord>,
+ receipts: Vec<RadrootsOrderReceiptRecord>,
+ payments: Vec<RadrootsOrderPaymentEventRecord>,
+ settlements: Vec<RadrootsOrderSettlementRecord>,
}
#[derive(Debug, Default)]
@@ -828,8 +827,8 @@ impl DesktopAppRuntime {
pub fn publish_order_revision_proposal(
&self,
order_id: OrderId,
- items: Vec<RadrootsTradeOrderItem>,
- economics: RadrootsTradeOrderEconomics,
+ items: Vec<RadrootsOrderItem>,
+ economics: RadrootsOrderEconomics,
reason: &str,
) -> Result<bool, AppSqliteError> {
self.lock_state_mut()
@@ -2438,7 +2437,7 @@ impl DesktopAppRuntimeState {
});
}
let listing_address =
- radroots_sdk::trade::parse_listing_address(request.payload.listing_addr.as_str())
+ radroots_sdk::order::parse_listing_address(request.payload.listing_addr.as_str())
.map_err(|_| AppSqliteError::InvalidProjection {
reason: "seller order decision listing address is invalid",
})?;
@@ -2539,7 +2538,7 @@ impl DesktopAppRuntimeState {
fn prepare_seller_order_fulfillment(
&mut self,
order_id: OrderId,
- status: RadrootsActiveTradeFulfillmentState,
+ status: RadrootsOrderFulfillmentState,
) -> Result<AppOrderFulfillmentPublishPayload, AppSqliteError> {
let _ = self.import_shared_local_events()?;
let relay_urls = normalized_app_sync_relay_urls(&self.nostr_relay_urls).map_err(|_| {
@@ -2593,7 +2592,7 @@ impl DesktopAppRuntimeState {
};
if !matches!(
decision.payload.decision,
- RadrootsTradeOrderDecision::Accepted { .. }
+ RadrootsOrderDecisionOutcome::Accepted { .. }
) {
return Err(AppSqliteError::InvalidProjection {
reason: "seller order fulfillment requires accepted order decision evidence",
@@ -2610,8 +2609,8 @@ impl DesktopAppRuntimeState {
.is_some_and(|fulfillment| {
matches!(
fulfillment.status,
- RadrootsActiveTradeFulfillmentState::Delivered
- | RadrootsActiveTradeFulfillmentState::SellerCancelled
+ RadrootsOrderFulfillmentState::Delivered
+ | RadrootsOrderFulfillmentState::SellerCancelled
)
})
{
@@ -2659,7 +2658,7 @@ impl DesktopAppRuntimeState {
fn publish_seller_order_fulfillment(
&mut self,
order_id: OrderId,
- status: RadrootsActiveTradeFulfillmentState,
+ status: RadrootsOrderFulfillmentState,
) -> Result<bool, AppSqliteError> {
let payload = self.prepare_seller_order_fulfillment(order_id, status)?;
let operation = PendingSyncOperation::from_publish_payload(
@@ -2676,8 +2675,8 @@ impl DesktopAppRuntimeState {
fn prepare_seller_order_revision_proposal(
&mut self,
order_id: OrderId,
- items: Vec<RadrootsTradeOrderItem>,
- economics: RadrootsTradeOrderEconomics,
+ items: Vec<RadrootsOrderItem>,
+ economics: RadrootsOrderEconomics,
reason: &str,
) -> Result<AppOrderRevisionProposalPublishPayload, AppSqliteError> {
let _ = self.import_shared_local_events()?;
@@ -2725,7 +2724,7 @@ impl DesktopAppRuntimeState {
});
}
let listing_address =
- radroots_sdk::trade::parse_listing_address(request.payload.listing_addr.as_str())
+ radroots_sdk::order::parse_listing_address(request.payload.listing_addr.as_str())
.map_err(|_| AppSqliteError::InvalidProjection {
reason: "seller order revision listing address is invalid",
})?;
@@ -2742,7 +2741,7 @@ impl DesktopAppRuntimeState {
};
if !matches!(
decision.payload.decision,
- RadrootsTradeOrderDecision::Accepted { .. }
+ RadrootsOrderDecisionOutcome::Accepted { .. }
) {
return Err(AppSqliteError::InvalidProjection {
reason: "seller order revision requires accepted order decision evidence",
@@ -2808,8 +2807,8 @@ impl DesktopAppRuntimeState {
fn publish_seller_order_revision_proposal(
&mut self,
order_id: OrderId,
- items: Vec<RadrootsTradeOrderItem>,
- economics: RadrootsTradeOrderEconomics,
+ items: Vec<RadrootsOrderItem>,
+ economics: RadrootsOrderEconomics,
reason: &str,
) -> Result<bool, AppSqliteError> {
let payload =
@@ -2828,7 +2827,7 @@ impl DesktopAppRuntimeState {
fn prepare_buyer_order_revision_decision(
&mut self,
order_id: OrderId,
- decision: RadrootsTradeOrderRevisionDecision,
+ decision: RadrootsOrderRevisionOutcome,
) -> Result<AppOrderRevisionDecisionPublishPayload, AppSqliteError> {
let _ = self.import_shared_local_events()?;
let relay_urls = normalized_app_sync_relay_urls(&self.nostr_relay_urls).map_err(|_| {
@@ -2890,7 +2889,7 @@ impl DesktopAppRuntimeState {
};
if !matches!(
order_decision.payload.decision,
- RadrootsTradeOrderDecision::Accepted { .. }
+ RadrootsOrderDecisionOutcome::Accepted { .. }
) {
return Err(AppSqliteError::InvalidProjection {
reason: "buyer order revision requires accepted order decision evidence",
@@ -2934,10 +2933,7 @@ impl DesktopAppRuntimeState {
&mut self,
order_id: OrderId,
) -> Result<bool, AppSqliteError> {
- self.publish_buyer_order_revision_decision(
- order_id,
- RadrootsTradeOrderRevisionDecision::Accepted,
- )
+ self.publish_buyer_order_revision_decision(order_id, RadrootsOrderRevisionOutcome::Accepted)
}
fn publish_buyer_order_revision_decline(
@@ -2946,7 +2942,7 @@ impl DesktopAppRuntimeState {
) -> Result<bool, AppSqliteError> {
self.publish_buyer_order_revision_decision(
order_id,
- RadrootsTradeOrderRevisionDecision::Declined {
+ RadrootsOrderRevisionOutcome::Declined {
reason: "buyer kept order as placed".to_owned(),
},
)
@@ -2955,7 +2951,7 @@ impl DesktopAppRuntimeState {
fn publish_buyer_order_revision_decision(
&mut self,
order_id: OrderId,
- decision: RadrootsTradeOrderRevisionDecision,
+ decision: RadrootsOrderRevisionOutcome,
) -> Result<bool, AppSqliteError> {
let payload = self.prepare_buyer_order_revision_decision(order_id, decision)?;
let operation = PendingSyncOperation::from_publish_payload(
@@ -3043,17 +3039,17 @@ impl DesktopAppRuntimeState {
});
}
let prev_event_id = match lifecycle.status {
- RadrootsActiveOrderStatus::Requested => request.request_event_id.clone(),
- RadrootsActiveOrderStatus::Accepted => active_order_current_parent_event_id(
+ RadrootsOrderStatus::Requested => request.request_event_id.clone(),
+ RadrootsOrderStatus::Accepted => active_order_current_parent_event_id(
&lifecycle,
"buyer order cancellation requires order decision evidence",
)?,
- RadrootsActiveOrderStatus::Missing
- | RadrootsActiveOrderStatus::Declined
- | RadrootsActiveOrderStatus::Cancelled
- | RadrootsActiveOrderStatus::Completed
- | RadrootsActiveOrderStatus::Disputed
- | RadrootsActiveOrderStatus::Invalid => {
+ RadrootsOrderStatus::Missing
+ | RadrootsOrderStatus::Declined
+ | RadrootsOrderStatus::Cancelled
+ | RadrootsOrderStatus::Completed
+ | RadrootsOrderStatus::Disputed
+ | RadrootsOrderStatus::Invalid => {
return Err(AppSqliteError::InvalidProjection {
reason: "buyer order cancellation requires an open order",
});
@@ -3162,8 +3158,8 @@ impl DesktopAppRuntimeState {
})?;
if !matches!(
fulfillment.status,
- RadrootsActiveTradeFulfillmentState::ReadyForPickup
- | RadrootsActiveTradeFulfillmentState::Delivered
+ RadrootsOrderFulfillmentState::ReadyForPickup
+ | RadrootsOrderFulfillmentState::Delivered
) {
return Err(AppSqliteError::InvalidProjection {
reason: "buyer order receipt requires ready fulfillment evidence",
@@ -5340,8 +5336,7 @@ impl DesktopAppRuntimeState {
if record.family != LocalRecordFamily::SignedEvent
|| record.event_kind
!= Some(i64::from(
- radroots_sdk::trade::RadrootsActiveTradeMessageType::TradeOrderRequested
- .kind(),
+ radroots_sdk::order::RadrootsOrderEventType::OrderRequested.kind(),
))
|| !signed_order_request_evidence_record_is_usable(&record)
{
@@ -5350,7 +5345,7 @@ impl DesktopAppRuntimeState {
let Some(event) = signed_event_from_local_record(&record)? else {
continue;
};
- let Ok(envelope) = radroots_sdk::trade::parse_order_request(&event) else {
+ let Ok(envelope) = radroots_sdk::order::parse_order_request(&event) else {
continue;
};
insert_seller_order_request_evidence(
@@ -5378,11 +5373,11 @@ impl DesktopAppRuntimeState {
return Ok(());
};
let events = sqlite_store.load_local_interop_signed_events_by_kind(i64::from(
- radroots_sdk::trade::RadrootsActiveTradeMessageType::TradeOrderRequested.kind(),
+ radroots_sdk::order::RadrootsOrderEventType::OrderRequested.kind(),
))?;
for event in events {
- let Ok(envelope) = radroots_sdk::trade::parse_order_request(&event) else {
+ let Ok(envelope) = radroots_sdk::order::parse_order_request(&event) else {
continue;
};
insert_seller_order_request_evidence(
@@ -5408,7 +5403,7 @@ impl DesktopAppRuntimeState {
});
let mut buckets = AppActiveOrderEvidenceBuckets::default();
- buckets.requests.push(RadrootsActiveOrderRequestRecord {
+ buckets.requests.push(RadrootsOrderRequestRecord {
event_id: request.request_event_id.clone(),
author_pubkey: request.request_author_pubkey.clone(),
payload: request.payload.clone(),
@@ -5420,15 +5415,15 @@ impl DesktopAppRuntimeState {
continue;
}
match event.kind {
- KIND_TRADE_ORDER_DECISION => {
+ KIND_ORDER_DECISION => {
let envelope =
- radroots_sdk::trade::parse_order_decision(&event).map_err(|_| {
+ radroots_sdk::order::parse_order_decision(&event).map_err(|_| {
AppSqliteError::InvalidProjection {
reason: "order lifecycle evidence is invalid",
}
})?;
let context = active_order_event_record_context(&event, envelope.message_type)?;
- buckets.decisions.push(RadrootsActiveOrderDecisionRecord {
+ buckets.decisions.push(RadrootsOrderDecisionRecord {
event_id: event.id,
author_pubkey: event.author,
counterparty_pubkey: context.0,
@@ -5437,8 +5432,8 @@ impl DesktopAppRuntimeState {
payload: envelope.payload,
});
}
- KIND_TRADE_ORDER_REVISION => {
- let Ok(envelope) = radroots_sdk::trade::parse_order_revision_proposal(&event)
+ KIND_ORDER_REVISION_PROPOSAL => {
+ let Ok(envelope) = radroots_sdk::order::parse_order_revision_proposal(&event)
else {
return Err(AppSqliteError::InvalidProjection {
reason: "order lifecycle evidence is invalid",
@@ -5447,7 +5442,7 @@ impl DesktopAppRuntimeState {
let context = active_order_event_record_context(&event, envelope.message_type)?;
buckets
.revision_proposals
- .push(RadrootsActiveOrderRevisionProposalRecord {
+ .push(RadrootsOrderRevisionProposalRecord {
event_id: event.id,
author_pubkey: event.author,
counterparty_pubkey: context.0,
@@ -5456,8 +5451,8 @@ impl DesktopAppRuntimeState {
payload: envelope.payload,
});
}
- KIND_TRADE_ORDER_REVISION_RESPONSE => {
- let Ok(envelope) = radroots_sdk::trade::parse_order_revision_decision(&event)
+ KIND_ORDER_REVISION_DECISION => {
+ let Ok(envelope) = radroots_sdk::order::parse_order_revision_decision(&event)
else {
return Err(AppSqliteError::InvalidProjection {
reason: "order lifecycle evidence is invalid",
@@ -5466,7 +5461,7 @@ impl DesktopAppRuntimeState {
let context = active_order_event_record_context(&event, envelope.message_type)?;
buckets
.revision_decisions
- .push(RadrootsActiveOrderRevisionDecisionRecord {
+ .push(RadrootsOrderRevisionDecisionRecord {
event_id: event.id,
author_pubkey: event.author,
counterparty_pubkey: context.0,
@@ -5475,50 +5470,46 @@ impl DesktopAppRuntimeState {
payload: envelope.payload,
});
}
- KIND_TRADE_CANCEL => {
- let Ok(envelope) = radroots_sdk::trade::parse_order_cancellation(&event) else {
+ KIND_ORDER_CANCELLATION => {
+ let Ok(envelope) = radroots_sdk::order::parse_order_cancellation(&event) else {
return Err(AppSqliteError::InvalidProjection {
reason: "order lifecycle evidence is invalid",
});
};
let context = active_order_event_record_context(&event, envelope.message_type)?;
- buckets
- .cancellations
- .push(RadrootsActiveOrderCancellationRecord {
- event_id: event.id,
- author_pubkey: event.author,
- counterparty_pubkey: context.0,
- root_event_id: context.1,
- prev_event_id: context.2,
- payload: envelope.payload,
- });
+ buckets.cancellations.push(RadrootsOrderCancellationRecord {
+ event_id: event.id,
+ author_pubkey: event.author,
+ counterparty_pubkey: context.0,
+ root_event_id: context.1,
+ prev_event_id: context.2,
+ payload: envelope.payload,
+ });
}
- KIND_TRADE_FULFILLMENT_UPDATE => {
- let Ok(envelope) = radroots_sdk::trade::parse_fulfillment_update(&event) else {
+ KIND_ORDER_FULFILLMENT_UPDATE => {
+ let Ok(envelope) = radroots_sdk::order::parse_fulfillment_update(&event) else {
return Err(AppSqliteError::InvalidProjection {
reason: "order lifecycle evidence is invalid",
});
};
let context = active_order_event_record_context(&event, envelope.message_type)?;
- buckets
- .fulfillments
- .push(RadrootsActiveOrderFulfillmentRecord {
- event_id: event.id,
- author_pubkey: event.author,
- counterparty_pubkey: context.0,
- root_event_id: context.1,
- prev_event_id: context.2,
- payload: envelope.payload,
- });
+ buckets.fulfillments.push(RadrootsOrderFulfillmentRecord {
+ event_id: event.id,
+ author_pubkey: event.author,
+ counterparty_pubkey: context.0,
+ root_event_id: context.1,
+ prev_event_id: context.2,
+ payload: envelope.payload,
+ });
}
- KIND_TRADE_RECEIPT => {
- let Ok(envelope) = radroots_sdk::trade::parse_buyer_receipt(&event) else {
+ KIND_ORDER_RECEIPT => {
+ let Ok(envelope) = radroots_sdk::order::parse_buyer_receipt(&event) else {
return Err(AppSqliteError::InvalidProjection {
reason: "order lifecycle evidence is invalid",
});
};
let context = active_order_event_record_context(&event, envelope.message_type)?;
- buckets.receipts.push(RadrootsActiveOrderReceiptRecord {
+ buckets.receipts.push(RadrootsOrderReceiptRecord {
event_id: event.id,
author_pubkey: event.author,
counterparty_pubkey: context.0,
@@ -5527,15 +5518,14 @@ impl DesktopAppRuntimeState {
payload: envelope.payload,
});
}
- KIND_TRADE_PAYMENT_RECORDED => {
- let envelope =
- active_trade_payment_recorded_from_event(&event).map_err(|_| {
- AppSqliteError::InvalidProjection {
- reason: "order lifecycle evidence is invalid",
- }
- })?;
+ KIND_ORDER_PAYMENT_RECORD => {
+ let envelope = order_payment_record_from_event(&event).map_err(|_| {
+ AppSqliteError::InvalidProjection {
+ reason: "order lifecycle evidence is invalid",
+ }
+ })?;
let context = active_order_event_record_context(&event, envelope.message_type)?;
- buckets.payments.push(RadrootsActiveOrderPaymentRecord {
+ buckets.payments.push(RadrootsOrderPaymentEventRecord {
event_id: event.id,
author_pubkey: event.author,
counterparty_pubkey: context.0,
@@ -5544,30 +5534,27 @@ impl DesktopAppRuntimeState {
payload: envelope.payload,
});
}
- KIND_TRADE_SETTLEMENT_DECISION => {
- let envelope =
- active_trade_settlement_decision_from_event(&event).map_err(|_| {
- AppSqliteError::InvalidProjection {
- reason: "order lifecycle evidence is invalid",
- }
- })?;
+ KIND_ORDER_SETTLEMENT_DECISION => {
+ let envelope = order_settlement_decision_from_event(&event).map_err(|_| {
+ AppSqliteError::InvalidProjection {
+ reason: "order lifecycle evidence is invalid",
+ }
+ })?;
let context = active_order_event_record_context(&event, envelope.message_type)?;
- buckets
- .settlements
- .push(RadrootsActiveOrderSettlementRecord {
- event_id: event.id,
- author_pubkey: event.author,
- counterparty_pubkey: context.0,
- root_event_id: context.1,
- prev_event_id: context.2,
- payload: envelope.payload,
- });
+ buckets.settlements.push(RadrootsOrderSettlementRecord {
+ event_id: event.id,
+ author_pubkey: event.author,
+ counterparty_pubkey: context.0,
+ root_event_id: context.1,
+ prev_event_id: context.2,
+ payload: envelope.payload,
+ });
}
_ => {}
}
}
- let projection = reduce_active_order_events(
+ let projection = reduce_order_events(
request.payload.order_id.as_str(),
buckets.requests.clone(),
buckets.decisions.clone(),
@@ -5579,8 +5566,7 @@ impl DesktopAppRuntimeState {
buckets.payments.clone(),
buckets.settlements.clone(),
);
- if !projection.issues.is_empty() || projection.status == RadrootsActiveOrderStatus::Invalid
- {
+ if !projection.issues.is_empty() || projection.status == RadrootsOrderStatus::Invalid {
return Err(AppSqliteError::InvalidProjection {
reason: "order lifecycle evidence is invalid",
});
@@ -5660,14 +5646,14 @@ impl DesktopAppRuntimeState {
let mut events = Vec::new();
let mut seen_event_ids = BTreeSet::new();
let kinds = [
- KIND_TRADE_ORDER_DECISION,
- KIND_TRADE_ORDER_REVISION,
- KIND_TRADE_ORDER_REVISION_RESPONSE,
- KIND_TRADE_CANCEL,
- KIND_TRADE_FULFILLMENT_UPDATE,
- KIND_TRADE_RECEIPT,
- KIND_TRADE_PAYMENT_RECORDED,
- KIND_TRADE_SETTLEMENT_DECISION,
+ KIND_ORDER_DECISION,
+ KIND_ORDER_REVISION_PROPOSAL,
+ KIND_ORDER_REVISION_DECISION,
+ KIND_ORDER_CANCELLATION,
+ KIND_ORDER_FULFILLMENT_UPDATE,
+ KIND_ORDER_RECEIPT,
+ KIND_ORDER_PAYMENT_RECORD,
+ KIND_ORDER_SETTLEMENT_DECISION,
];
if let Some(sqlite_store) = self.sqlite_store.as_ref() {
@@ -7192,7 +7178,7 @@ async fn publish_app_payload(
let listing_event = order_request_listing_event_ptr(payload, configured_relay_urls)?;
let order = order_request_publish_payload_to_sdk_order(payload)?;
client
- .trade()
+ .order()
.publish_order_request_with_identity(identity, &listing_event, &order)
.await
.map_err(|error| AppSyncTransportError::failed(error.to_string()))
@@ -7200,7 +7186,7 @@ async fn publish_app_payload(
AppPublishPayload::OrderDecision(payload) => {
let decision = order_decision_publish_payload_to_sdk_decision(payload);
client
- .trade()
+ .order()
.publish_order_decision_with_identity(
identity,
payload.request_event_id.as_str(),
@@ -7213,7 +7199,7 @@ async fn publish_app_payload(
AppPublishPayload::OrderRevisionProposal(payload) => {
let proposal = order_revision_proposal_publish_payload_to_sdk_revision(payload);
client
- .trade()
+ .order()
.publish_order_revision_proposal_with_identity(
identity,
payload.request_event_id.as_str(),
@@ -7227,7 +7213,7 @@ async fn publish_app_payload(
let decision =
order_revision_decision_publish_payload_to_sdk_revision_decision(payload);
client
- .trade()
+ .order()
.publish_order_revision_decision_with_identity(
identity,
payload.request_event_id.as_str(),
@@ -7240,7 +7226,7 @@ async fn publish_app_payload(
AppPublishPayload::OrderCancellation(payload) => {
let cancellation = order_cancellation_publish_payload_to_sdk_cancellation(payload);
client
- .trade()
+ .order()
.publish_order_cancellation_with_identity(
identity,
payload.request_event_id.as_str(),
@@ -7253,7 +7239,7 @@ async fn publish_app_payload(
AppPublishPayload::OrderFulfillment(payload) => {
let fulfillment = order_fulfillment_publish_payload_to_sdk_fulfillment(payload);
client
- .trade()
+ .order()
.publish_fulfillment_update_with_identity(
identity,
payload.request_event_id.as_str(),
@@ -7266,7 +7252,7 @@ async fn publish_app_payload(
AppPublishPayload::OrderReceipt(payload) => {
let receipt = order_receipt_publish_payload_to_sdk_receipt(payload);
client
- .trade()
+ .order()
.publish_buyer_receipt_with_identity(
identity,
payload.request_event_id.as_str(),
@@ -7376,6 +7362,7 @@ fn listing_publish_payload_to_sdk_listing(
lng: None,
geohash: None,
}),
+ published_at: None,
images: None,
})
}
@@ -7519,7 +7506,7 @@ fn missing_listing_provenance_relay_error(known_relays: &[String]) -> AppSyncTra
fn order_request_publish_payload_to_sdk_order(
payload: &AppOrderRequestPublishPayload,
-) -> Result<RadrootsTradeOrderRequested, AppSyncTransportError> {
+) -> Result<RadrootsOrderRequest, AppSyncTransportError> {
let Some(document_json) = payload.order_document_json.as_ref() else {
return Err(AppSyncTransportError::failed(
"order request publish requires order document",
@@ -7529,7 +7516,7 @@ fn order_request_publish_payload_to_sdk_order(
.pointer("/document/order")
.or_else(|| document_json.get("order"))
.unwrap_or(document_json);
- serde_json::from_value::<RadrootsTradeOrderRequested>(order_json.clone())
+ serde_json::from_value::<RadrootsOrderRequest>(order_json.clone())
.map_err(|error| AppSyncTransportError::failed(error.to_string()))
}
@@ -9406,14 +9393,13 @@ fn trade_chain_tag_value(event: &radroots_sdk::RadrootsNostrEvent, key: &str) ->
fn active_order_event_record_context(
event: &radroots_sdk::RadrootsNostrEvent,
- message_type: radroots_sdk::trade::RadrootsActiveTradeMessageType,
+ message_type: radroots_sdk::order::RadrootsOrderEventType,
) -> Result<(String, String, String), AppSqliteError> {
- let context =
- active_trade_event_context_from_tags(message_type, &event.tags).map_err(|_| {
- AppSqliteError::InvalidProjection {
- reason: "order lifecycle evidence is invalid",
- }
- })?;
+ let context = order_event_context_from_tags(message_type, &event.tags).map_err(|_| {
+ AppSqliteError::InvalidProjection {
+ reason: "order lifecycle evidence is invalid",
+ }
+ })?;
let root_event_id = context
.root_event_id
.ok_or(AppSqliteError::InvalidProjection {
@@ -9442,7 +9428,7 @@ fn active_order_payment_blocks_lifecycle_write(
) -> bool {
matches!(
lifecycle.payment_state,
- RadrootsActiveOrderPaymentState::Recorded | RadrootsActiveOrderPaymentState::Settled
+ RadrootsOrderPaymentState::Recorded | RadrootsOrderPaymentState::Settled
)
}
@@ -9492,7 +9478,7 @@ fn active_order_pending_revision_proposal(
fn insert_seller_order_request_evidence(
order_id: &OrderId,
event: &radroots_sdk::RadrootsNostrEvent,
- payload: RadrootsTradeOrderRequested,
+ payload: RadrootsOrderRequest,
matched_requests: &mut BTreeMap<String, ResolvedAppSellerOrderRequest>,
) {
let app_order_id = projected_order_id_from_trade_request(
@@ -9569,8 +9555,8 @@ fn seller_order_inventory_commitments(
fn order_decision_publish_payload_to_sdk_decision(
payload: &AppOrderDecisionPublishPayload,
-) -> RadrootsTradeOrderDecisionEvent {
- RadrootsTradeOrderDecisionEvent {
+) -> RadrootsOrderDecision {
+ RadrootsOrderDecision {
order_id: payload.trade_order_id.clone(),
listing_addr: payload.listing_addr.clone(),
buyer_pubkey: payload.buyer_pubkey.clone(),
@@ -9578,26 +9564,28 @@ fn order_decision_publish_payload_to_sdk_decision(
decision: match &payload.decision {
AppOrderDecisionPayload::Accepted {
inventory_commitments,
- } => RadrootsTradeOrderDecision::Accepted {
+ } => RadrootsOrderDecisionOutcome::Accepted {
inventory_commitments: inventory_commitments
.iter()
- .map(|commitment| RadrootsTradeInventoryCommitment {
+ .map(|commitment| RadrootsOrderInventoryCommitment {
bin_id: commitment.bin_id.clone(),
bin_count: commitment.bin_count,
})
.collect(),
},
- AppOrderDecisionPayload::Declined { reason } => RadrootsTradeOrderDecision::Declined {
- reason: reason.clone(),
- },
+ AppOrderDecisionPayload::Declined { reason } => {
+ RadrootsOrderDecisionOutcome::Declined {
+ reason: reason.clone(),
+ }
+ }
},
}
}
fn order_revision_proposal_publish_payload_to_sdk_revision(
payload: &AppOrderRevisionProposalPublishPayload,
-) -> RadrootsTradeOrderRevisionProposed {
- RadrootsTradeOrderRevisionProposed {
+) -> RadrootsOrderRevisionProposal {
+ RadrootsOrderRevisionProposal {
revision_id: payload.revision_id.clone(),
order_id: payload.trade_order_id.clone(),
listing_addr: payload.listing_addr.clone(),
@@ -9613,8 +9601,8 @@ fn order_revision_proposal_publish_payload_to_sdk_revision(
fn order_revision_decision_publish_payload_to_sdk_revision_decision(
payload: &AppOrderRevisionDecisionPublishPayload,
-) -> RadrootsTradeOrderRevisionDecisionEvent {
- RadrootsTradeOrderRevisionDecisionEvent {
+) -> RadrootsOrderRevisionDecision {
+ RadrootsOrderRevisionDecision {
revision_id: payload.revision_id.clone(),
order_id: payload.trade_order_id.clone(),
listing_addr: payload.listing_addr.clone(),
@@ -9628,8 +9616,8 @@ fn order_revision_decision_publish_payload_to_sdk_revision_decision(
fn order_fulfillment_publish_payload_to_sdk_fulfillment(
payload: &AppOrderFulfillmentPublishPayload,
-) -> RadrootsTradeFulfillmentUpdated {
- RadrootsTradeFulfillmentUpdated {
+) -> RadrootsOrderFulfillmentUpdate {
+ RadrootsOrderFulfillmentUpdate {
order_id: payload.trade_order_id.clone(),
listing_addr: payload.listing_addr.clone(),
buyer_pubkey: payload.buyer_pubkey.clone(),
@@ -9640,8 +9628,8 @@ fn order_fulfillment_publish_payload_to_sdk_fulfillment(
fn order_cancellation_publish_payload_to_sdk_cancellation(
payload: &AppOrderCancellationPublishPayload,
-) -> RadrootsTradeOrderCancelled {
- RadrootsTradeOrderCancelled {
+) -> RadrootsOrderCancellation {
+ RadrootsOrderCancellation {
order_id: payload.trade_order_id.clone(),
listing_addr: payload.listing_addr.clone(),
buyer_pubkey: payload.buyer_pubkey.clone(),
@@ -9652,8 +9640,8 @@ fn order_cancellation_publish_payload_to_sdk_cancellation(
fn order_receipt_publish_payload_to_sdk_receipt(
payload: &AppOrderReceiptPublishPayload,
-) -> RadrootsTradeBuyerReceipt {
- RadrootsTradeBuyerReceipt {
+) -> RadrootsOrderReceipt {
+ RadrootsOrderReceipt {
order_id: payload.trade_order_id.clone(),
listing_addr: payload.listing_addr.clone(),
buyer_pubkey: payload.buyer_pubkey.clone(),
@@ -9778,8 +9766,8 @@ mod tests {
use radroots_core::{
RadrootsCoreCurrency, RadrootsCoreDecimal, RadrootsCoreMoney, RadrootsCoreUnit,
};
- use radroots_events_codec::trade::{
- active_trade_payment_recorded_event_build, active_trade_settlement_decision_event_build,
+ use radroots_events_codec::order::{
+ order_payment_record_event_build, order_settlement_decision_event_build,
};
use radroots_identity::{RadrootsIdentity, RadrootsIdentityId};
use radroots_local_events::{
@@ -9795,18 +9783,17 @@ mod tests {
account_secret_slot,
};
use radroots_sdk::RadrootsNostrEventPtr;
- use radroots_sdk::trade::{
- RadrootsActiveTradeFulfillmentState, RadrootsTradeBuyerReceipt,
- RadrootsTradeFulfillmentUpdated, RadrootsTradeInventoryCommitment,
- RadrootsTradeOrderCancelled, RadrootsTradeOrderDecision, RadrootsTradeOrderDecisionEvent,
- RadrootsTradeOrderEconomicItem, RadrootsTradeOrderEconomics, RadrootsTradeOrderItem,
- RadrootsTradeOrderRequested, RadrootsTradeOrderRevisionDecision,
- RadrootsTradeOrderRevisionDecisionEvent, RadrootsTradeOrderRevisionProposed,
- RadrootsTradePaymentMethod, RadrootsTradePaymentRecorded, RadrootsTradePricingBasis,
- RadrootsTradeSettlementDecision, RadrootsTradeSettlementDecisionEvent,
+ use radroots_sdk::order::{
+ RadrootsOrderCancellation, RadrootsOrderDecision, RadrootsOrderDecisionOutcome,
+ RadrootsOrderEconomicItem, RadrootsOrderEconomics, RadrootsOrderFulfillmentState,
+ RadrootsOrderFulfillmentUpdate, RadrootsOrderInventoryCommitment, RadrootsOrderItem,
+ RadrootsOrderPaymentMethod, RadrootsOrderPaymentRecord, RadrootsOrderPricingBasis,
+ RadrootsOrderReceipt, RadrootsOrderRequest, RadrootsOrderRevisionDecision,
+ RadrootsOrderRevisionOutcome, RadrootsOrderRevisionProposal,
+ RadrootsOrderSettlementDecision, RadrootsOrderSettlementOutcome,
};
use radroots_sql_core::{SqlExecutor, SqliteExecutor};
- use radroots_trade::order::radroots_trade_order_economics_digest;
+ use radroots_trade::order::radroots_order_economics_digest;
use serde_json::json;
use tokio::net::TcpListener;
use tokio::sync::oneshot;
@@ -10213,21 +10200,21 @@ mod tests {
seller_identity.public_key_hex(),
super::d_tag_from_uuid(ProductId::new().as_uuid())
);
- let order_document = RadrootsTradeOrderRequested {
+ let order_document = RadrootsOrderRequest {
order_id: order_id.to_string(),
listing_addr: listing_addr.clone(),
buyer_pubkey: buyer_identity.public_key_hex(),
seller_pubkey: seller_identity.public_key_hex(),
- items: vec![RadrootsTradeOrderItem {
+ items: vec![RadrootsOrderItem {
bin_id: "bin-1".to_owned(),
bin_count: 1,
}],
- economics: RadrootsTradeOrderEconomics {
+ economics: RadrootsOrderEconomics {
quote_id: format!("quote-{order_id}"),
quote_version: 1,
- pricing_basis: RadrootsTradePricingBasis::ListingEvent,
+ pricing_basis: RadrootsOrderPricingBasis::ListingEvent,
currency: RadrootsCoreCurrency::USD,
- items: vec![RadrootsTradeOrderEconomicItem {
+ items: vec![RadrootsOrderEconomicItem {
bin_id: "bin-1".to_owned(),
bin_count: 1,
quantity_amount: RadrootsCoreDecimal::from(1u32),
@@ -10385,12 +10372,12 @@ mod tests {
buyer_identity.public_key_hex(),
seller_identity.public_key_hex(),
);
- let revision_economics = RadrootsTradeOrderEconomics {
+ let revision_economics = RadrootsOrderEconomics {
quote_id: "quote-revision-1".to_owned(),
quote_version: 2,
- pricing_basis: RadrootsTradePricingBasis::ListingEvent,
+ pricing_basis: RadrootsOrderPricingBasis::ListingEvent,
currency: RadrootsCoreCurrency::USD,
- items: vec![RadrootsTradeOrderEconomicItem {
+ items: vec![RadrootsOrderEconomicItem {
bin_id: "bin-1".to_owned(),
bin_count: 3,
quantity_amount: RadrootsCoreDecimal::from(1u32),
@@ -10424,7 +10411,7 @@ mod tests {
listing_addr: common.4.clone(),
buyer_pubkey: common.5.clone(),
seller_pubkey: common.6.clone(),
- items: vec![RadrootsTradeOrderItem {
+ items: vec![RadrootsOrderItem {
bin_id: "bin-1".to_owned(),
bin_count: 3,
}],
@@ -10446,7 +10433,7 @@ mod tests {
listing_addr: common.4.clone(),
buyer_pubkey: common.5.clone(),
seller_pubkey: common.6.clone(),
- decision: RadrootsTradeOrderRevisionDecision::Accepted,
+ decision: RadrootsOrderRevisionOutcome::Accepted,
});
let cancellation =
AppPublishPayload::OrderCancellation(AppOrderCancellationPublishPayload {
@@ -10477,7 +10464,7 @@ mod tests {
listing_addr: common.4.clone(),
buyer_pubkey: common.5.clone(),
seller_pubkey: common.6.clone(),
- status: RadrootsActiveTradeFulfillmentState::ReadyForPickup,
+ status: RadrootsOrderFulfillmentState::ReadyForPickup,
});
let receipt = AppPublishPayload::OrderReceipt(AppOrderReceiptPublishPayload {
context: AppPublishContext::new(buyer_account_id.to_string(), "buyer_order_receipt"),
@@ -10531,35 +10518,35 @@ mod tests {
let event = published_receipt_event(receipt);
match receipt.event_kind {
3424 => {
- let envelope = radroots_sdk::trade::parse_order_revision_proposal(&event)
+ let envelope = radroots_sdk::order::parse_order_revision_proposal(&event)
.expect("order revision proposal should parse");
assert_eq!(envelope.payload.reason, "harvest count updated");
assert_eq!(envelope.payload.items[0].bin_count, 3);
}
3425 => {
- let envelope = radroots_sdk::trade::parse_order_revision_decision(&event)
+ let envelope = radroots_sdk::order::parse_order_revision_decision(&event)
.expect("order revision decision should parse");
assert_eq!(envelope.payload.revision_id, "revision-1");
assert_eq!(
envelope.payload.decision,
- RadrootsTradeOrderRevisionDecision::Accepted
+ RadrootsOrderRevisionOutcome::Accepted
);
}
3432 => {
- let envelope = radroots_sdk::trade::parse_order_cancellation(&event)
+ let envelope = radroots_sdk::order::parse_order_cancellation(&event)
.expect("order cancellation should parse");
assert_eq!(envelope.payload.reason, "buyer cancelled order");
}
3433 => {
- let envelope = radroots_sdk::trade::parse_fulfillment_update(&event)
+ let envelope = radroots_sdk::order::parse_fulfillment_update(&event)
.expect("fulfillment update should parse");
assert_eq!(
envelope.payload.status,
- RadrootsActiveTradeFulfillmentState::ReadyForPickup
+ RadrootsOrderFulfillmentState::ReadyForPickup
);
}
3434 => {
- let envelope = radroots_sdk::trade::parse_buyer_receipt(&event)
+ let envelope = radroots_sdk::order::parse_buyer_receipt(&event)
.expect("buyer receipt should parse");
assert!(envelope.payload.received);
}
@@ -14788,7 +14775,7 @@ mod tests {
assert_eq!(payload.buyer_pubkey, buyer_pubkey);
assert_eq!(payload.seller_pubkey, seller_pubkey);
assert_eq!(decision.order_id, "seller-order-decision-1");
- let RadrootsTradeOrderDecision::Accepted {
+ let RadrootsOrderDecisionOutcome::Accepted {
inventory_commitments,
} = decision.decision
else {
@@ -14821,7 +14808,7 @@ mod tests {
reason: "out of stock".to_owned()
}
);
- let RadrootsTradeOrderDecision::Declined { reason } = decision.decision else {
+ let RadrootsOrderDecisionOutcome::Declined { reason } = decision.decision else {
panic!("expected declined decision");
};
assert_eq!(reason, "out of stock");
@@ -14983,12 +14970,12 @@ mod tests {
&& record.event_pubkey.as_deref() == Some(seller_pubkey.as_str())
}));
let decision_event = shared_seller_order_decision_event(&paths, seller_pubkey.as_str());
- let envelope = radroots_sdk::trade::parse_order_decision(&decision_event)
+ let envelope = radroots_sdk::order::parse_order_decision(&decision_event)
.expect("app seller order accept should parse as canonical order decision");
assert_eq!(envelope.payload.order_id, "seller-order-decision-1");
assert!(matches!(
envelope.payload.decision,
- RadrootsTradeOrderDecision::Accepted { .. }
+ RadrootsOrderDecisionOutcome::Accepted { .. }
));
assert!(event_has_tag(
&decision_event,
@@ -15025,9 +15012,9 @@ mod tests {
&& record.event_pubkey.as_deref() == Some(seller_pubkey.as_str())
}));
let decision_event = shared_seller_order_decision_event(&paths, seller_pubkey.as_str());
- let envelope = radroots_sdk::trade::parse_order_decision(&decision_event)
+ let envelope = radroots_sdk::order::parse_order_decision(&decision_event)
.expect("app seller order decline should parse as canonical order decision");
- let RadrootsTradeOrderDecision::Declined { reason } = envelope.payload.decision else {
+ let RadrootsOrderDecisionOutcome::Declined { reason } = envelope.payload.decision else {
panic!("expected declined decision");
};
assert_eq!(reason, "not available");
@@ -15051,31 +15038,31 @@ mod tests {
(
"preparing",
OrderFulfillmentAction::Preparing,
- RadrootsActiveTradeFulfillmentState::Preparing,
+ RadrootsOrderFulfillmentState::Preparing,
"scheduled",
),
(
"ready_for_pickup",
OrderFulfillmentAction::ReadyForPickup,
- RadrootsActiveTradeFulfillmentState::ReadyForPickup,
+ RadrootsOrderFulfillmentState::ReadyForPickup,
"packed",
),
(
"out_for_delivery",
OrderFulfillmentAction::OutForDelivery,
- RadrootsActiveTradeFulfillmentState::OutForDelivery,
+ RadrootsOrderFulfillmentState::OutForDelivery,
"packed",
),
(
"delivered",
OrderFulfillmentAction::Delivered,
- RadrootsActiveTradeFulfillmentState::Delivered,
+ RadrootsOrderFulfillmentState::Delivered,
"packed",
),
(
"seller_cancelled",
OrderFulfillmentAction::SellerCancelled,
- RadrootsActiveTradeFulfillmentState::SellerCancelled,
+ RadrootsOrderFulfillmentState::SellerCancelled,
"declined",
),
] {
@@ -15108,7 +15095,7 @@ mod tests {
shared_order_events_by_kind(&paths, 3433, seller_pubkey.as_str());
assert_eq!(fulfillment_events.len(), 1);
let fulfillment_event = fulfillment_events.first().expect("fulfillment event");
- let envelope = radroots_sdk::trade::parse_fulfillment_update(fulfillment_event)
+ let envelope = radroots_sdk::order::parse_fulfillment_update(fulfillment_event)
.expect("fulfillment should parse");
assert_eq!(envelope.payload.status, expected_status);
assert!(event_has_tag(
@@ -15125,10 +15112,10 @@ mod tests {
#[test]
fn runtime_publishes_seller_order_fulfillment_ready_from_revision_parent() {
for (label, revision_decision) in [
- ("accepted", RadrootsTradeOrderRevisionDecision::Accepted),
+ ("accepted", RadrootsOrderRevisionOutcome::Accepted),
(
"declined",
- RadrootsTradeOrderRevisionDecision::Declined {
+ RadrootsOrderRevisionOutcome::Declined {
reason: "keep original order".to_owned(),
},
),
@@ -15229,7 +15216,7 @@ mod tests {
listing_addr.as_str(),
buyer_pubkey.as_str(),
seller_pubkey.as_str(),
- RadrootsActiveTradeFulfillmentState::ReadyForPickup,
+ RadrootsOrderFulfillmentState::ReadyForPickup,
);
runtime
.refresh_shared_local_events()
@@ -15250,9 +15237,9 @@ mod tests {
let delivered_event = fulfillment_events
.iter()
.find(|event| {
- radroots_sdk::trade::parse_fulfillment_update(event)
+ radroots_sdk::order::parse_fulfillment_update(event)
.map(|envelope| {
- envelope.payload.status == RadrootsActiveTradeFulfillmentState::Delivered
+ envelope.payload.status == RadrootsOrderFulfillmentState::Delivered
})
.unwrap_or(false)
})
@@ -15272,7 +15259,7 @@ mod tests {
("seller_order_fulfillment_delivery_missing_ready", None),
(
"seller_order_fulfillment_delivery_preparing",
- Some(RadrootsActiveTradeFulfillmentState::Preparing),
+ Some(RadrootsOrderFulfillmentState::Preparing),
),
] {
let relay = ThreadedAckRelay::spawn();
@@ -15320,10 +15307,9 @@ mod tests {
let delivered_event = fulfillment_events
.iter()
.find(|event| {
- radroots_sdk::trade::parse_fulfillment_update(event)
+ radroots_sdk::order::parse_fulfillment_update(event)
.map(|envelope| {
- envelope.payload.status
- == RadrootsActiveTradeFulfillmentState::Delivered
+ envelope.payload.status == RadrootsOrderFulfillmentState::Delivered
})
.unwrap_or(false)
})
@@ -15374,7 +15360,7 @@ mod tests {
listing_addr.as_str(),
buyer_pubkey.as_str(),
seller_pubkey.as_str(),
- RadrootsActiveTradeFulfillmentState::ReadyForPickup,
+ RadrootsOrderFulfillmentState::ReadyForPickup,
);
} else {
append_signed_order_fulfillment_record_with_status_and_key(
@@ -15386,7 +15372,7 @@ mod tests {
listing_addr.as_str(),
buyer_pubkey.as_str(),
seller_pubkey.as_str(),
- RadrootsActiveTradeFulfillmentState::Preparing,
+ RadrootsOrderFulfillmentState::Preparing,
);
append_signed_order_fulfillment_record_with_status_and_key(
&paths,
@@ -15397,7 +15383,7 @@ mod tests {
listing_addr.as_str(),
buyer_pubkey.as_str(),
seller_pubkey.as_str(),
- RadrootsActiveTradeFulfillmentState::ReadyForPickup,
+ RadrootsOrderFulfillmentState::ReadyForPickup,
);
}
@@ -15515,7 +15501,7 @@ mod tests {
fn runtime_rejects_seller_order_revision_after_recorded_or_settled_payment_evidence() {
for (label, settlement) in [
("recorded", None),
- ("settled", Some(RadrootsTradeSettlementDecision::Accepted)),
+ ("settled", Some(RadrootsOrderSettlementOutcome::Accepted)),
] {
let relay = ThreadedAckRelay::spawn();
let runtime_label = format!("seller_order_revision_payment_{label}");
@@ -15625,7 +15611,7 @@ mod tests {
buyer_pubkey.as_str(),
seller_pubkey.as_str(),
2,
- RadrootsTradeSettlementDecision::Rejected,
+ RadrootsOrderSettlementOutcome::Rejected,
);
runtime
.refresh_shared_local_events()
@@ -16332,7 +16318,7 @@ mod tests {
let cancellation_event = cancellation_events
.first()
.expect("linked buyer cancellation event");
- let cancellation = radroots_sdk::trade::parse_order_cancellation(cancellation_event)
+ let cancellation = radroots_sdk::order::parse_order_cancellation(cancellation_event)
.expect("linked buyer cancellation should parse");
assert_eq!(cancellation.payload.order_id, fixture.trade_order_id);
assert_eq!(cancellation.payload.buyer_pubkey, fixture.buyer_pubkey);
@@ -16355,7 +16341,7 @@ mod tests {
fn runtime_rejects_linked_buyer_cancellation_after_recorded_or_settled_payment_evidence() {
for (label, settlement) in [
("recorded", None),
- ("settled", Some(RadrootsTradeSettlementDecision::Accepted)),
+ ("settled", Some(RadrootsOrderSettlementOutcome::Accepted)),
] {
let relay = ThreadedAckRelay::spawn();
let fixture_label = format!("linked_buyer_order_cancel_payment_{label}");
@@ -16442,7 +16428,7 @@ mod tests {
fixture.buyer_pubkey.as_str(),
fixture.seller_pubkey.as_str(),
2,
- RadrootsTradeSettlementDecision::Rejected,
+ RadrootsOrderSettlementOutcome::Rejected,
);
fixture
.runtime
@@ -16616,7 +16602,7 @@ mod tests {
fixture.buyer_pubkey.as_str(),
fixture.seller_pubkey.as_str(),
2,
- RadrootsTradeSettlementDecision::Accepted,
+ RadrootsOrderSettlementOutcome::Accepted,
);
let k3436_event_id = k3436_event.id.to_hex();
relay.push_event(&payment_event);
@@ -16649,10 +16635,10 @@ mod tests {
#[test]
fn runtime_publishes_linked_buyer_cancellation_from_revision_parent() {
for (label, revision_decision) in [
- ("accepted", RadrootsTradeOrderRevisionDecision::Accepted),
+ ("accepted", RadrootsOrderRevisionOutcome::Accepted),
(
"declined",
- RadrootsTradeOrderRevisionDecision::Declined {
+ RadrootsOrderRevisionOutcome::Declined {
reason: "keep original order".to_owned(),
},
),
@@ -16770,7 +16756,7 @@ mod tests {
shared_order_events_by_kind(&fixture.paths, 3434, fixture.buyer_pubkey.as_str());
assert_eq!(receipt_events.len(), 1);
let receipt_event = receipt_events.first().expect("linked buyer receipt event");
- let receipt = radroots_sdk::trade::parse_buyer_receipt(receipt_event)
+ let receipt = radroots_sdk::order::parse_buyer_receipt(receipt_event)
.expect("linked buyer receipt should parse");
assert_eq!(receipt.payload.order_id, fixture.trade_order_id);
assert_eq!(receipt.payload.buyer_pubkey, fixture.buyer_pubkey);
@@ -16802,7 +16788,7 @@ mod tests {
fixture.listing_addr.as_str(),
fixture.buyer_pubkey.as_str(),
fixture.seller_pubkey.as_str(),
- RadrootsActiveTradeFulfillmentState::Delivered,
+ RadrootsOrderFulfillmentState::Delivered,
);
install_direct_relay_sync_transport(&fixture.runtime, &relay);
fixture
@@ -16832,7 +16818,7 @@ mod tests {
shared_order_events_by_kind(&fixture.paths, 3434, fixture.buyer_pubkey.as_str());
assert_eq!(receipt_events.len(), 1);
let receipt_event = receipt_events.first().expect("linked buyer receipt event");
- let receipt = radroots_sdk::trade::parse_buyer_receipt(receipt_event)
+ let receipt = radroots_sdk::order::parse_buyer_receipt(receipt_event)
.expect("linked buyer delivered receipt should parse");
assert!(receipt.payload.received);
assert!(event_has_tag(
@@ -16882,7 +16868,7 @@ mod tests {
let receipt_event = receipt_events
.first()
.expect("linked buyer issue receipt event");
- let receipt = radroots_sdk::trade::parse_buyer_receipt(receipt_event)
+ let receipt = radroots_sdk::order::parse_buyer_receipt(receipt_event)
.expect("linked buyer issue receipt should parse");
assert!(!receipt.payload.received);
assert_eq!(receipt.payload.issue.as_deref(), Some("items need review"));
@@ -16980,7 +16966,7 @@ mod tests {
fixture.listing_addr.as_str(),
fixture.buyer_pubkey.as_str(),
fixture.seller_pubkey.as_str(),
- RadrootsActiveTradeFulfillmentState::ReadyForPickup,
+ RadrootsOrderFulfillmentState::ReadyForPickup,
);
let resolver_error = {
let state = fixture.runtime.lock_state();
@@ -17047,11 +17033,11 @@ mod tests {
.first()
.expect("linked buyer revision decision event");
let revision_decision =
- radroots_sdk::trade::parse_order_revision_decision(revision_decision_event)
+ radroots_sdk::order::parse_order_revision_decision(revision_decision_event)
.expect("linked buyer revision decision should parse");
assert_eq!(
revision_decision.payload.decision,
- RadrootsTradeOrderRevisionDecision::Accepted
+ RadrootsOrderRevisionOutcome::Accepted
);
assert!(event_has_tag(
revision_decision_event,
@@ -20780,18 +20766,18 @@ mod tests {
SqliteExecutor::open(database_path.as_path()).expect("open shared local events db");
let store = LocalEventsStore::new(executor);
store.migrate_up().expect("migrate shared local events");
- let order = RadrootsTradeOrderRequested {
+ let order = RadrootsOrderRequest {
order_id: trade_order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
seller_pubkey: seller_pubkey.to_owned(),
- items: vec![RadrootsTradeOrderItem {
+ items: vec![RadrootsOrderItem {
bin_id: "seller-order-primary-bin".to_owned(),
bin_count: order_quantity,
}],
economics: signed_order_request_economics(trade_order_id, order_quantity),
};
- let parts = radroots_sdk::trade::build_order_request_draft(
+ let parts = radroots_sdk::order::build_order_request_draft(
&RadrootsNostrEventPtr {
id: listing_event_id.to_owned(),
relays: Some("wss://relay.example".to_owned()),
@@ -20847,19 +20833,19 @@ mod tests {
fn signed_order_request_economics(
trade_order_id: &str,
order_quantity: u32,
- ) -> RadrootsTradeOrderEconomics {
+ ) -> RadrootsOrderEconomics {
let currency = RadrootsCoreCurrency::USD;
let unit_price_minor_units = 800_u32;
let total_minor_units = unit_price_minor_units
.checked_mul(order_quantity)
.expect("order total should fit");
- RadrootsTradeOrderEconomics {
+ RadrootsOrderEconomics {
quote_id: format!("{trade_order_id}-quote"),
quote_version: 1,
- pricing_basis: RadrootsTradePricingBasis::ListingEvent,
+ pricing_basis: RadrootsOrderPricingBasis::ListingEvent,
currency,
- items: vec![RadrootsTradeOrderEconomicItem {
+ items: vec![RadrootsOrderEconomicItem {
bin_id: "seller-order-primary-bin".to_owned(),
bin_count: order_quantity,
quantity_amount: RadrootsCoreDecimal::from(1u32),
@@ -20886,19 +20872,19 @@ mod tests {
seller_pubkey: &str,
order_quantity: u32,
) -> String {
- let payload = RadrootsTradeOrderDecisionEvent {
+ let payload = RadrootsOrderDecision {
order_id: trade_order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
seller_pubkey: seller_pubkey.to_owned(),
- decision: RadrootsTradeOrderDecision::Accepted {
- inventory_commitments: vec![RadrootsTradeInventoryCommitment {
+ decision: RadrootsOrderDecisionOutcome::Accepted {
+ inventory_commitments: vec![RadrootsOrderInventoryCommitment {
bin_id: "seller-order-primary-bin".to_owned(),
bin_count: order_quantity,
}],
},
};
- let parts = radroots_sdk::trade::build_order_decision_draft(
+ let parts = radroots_sdk::order::build_order_decision_draft(
request_event_id,
request_event_id,
&payload,
@@ -20958,7 +20944,7 @@ mod tests {
order_quantity: u32,
) -> String {
let economics = signed_order_request_economics(trade_order_id, order_quantity);
- let payload = RadrootsTradePaymentRecorded {
+ let payload = RadrootsOrderPaymentRecord {
order_id: trade_order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
@@ -20968,17 +20954,16 @@ mod tests {
agreement_event_id: agreement_event_id.to_owned(),
quote_id: economics.quote_id.clone(),
quote_version: economics.quote_version,
- economics_digest: radroots_trade_order_economics_digest(&economics)
+ economics_digest: radroots_order_economics_digest(&economics)
.expect("payment economics digest"),
amount: economics.total.amount,
currency: economics.total.currency,
- method: RadrootsTradePaymentMethod::ManualTransfer,
+ method: RadrootsOrderPaymentMethod::ManualTransfer,
reference: Some(format!("memo-{event_key}")),
paid_at: Some(1_774_000_050),
};
- let parts =
- active_trade_payment_recorded_event_build(request_event_id, prev_event_id, &payload)
- .expect("payment recorded draft should build");
+ let parts = order_payment_record_event_build(request_event_id, prev_event_id, &payload)
+ .expect("payment recorded draft should build");
let record_id = format!("app:signed_event:payment:{event_key}");
let event_id = format!("event-{record_id}");
append_trade_signed_event_record(
@@ -21005,10 +20990,10 @@ mod tests {
buyer_pubkey: &str,
seller_pubkey: &str,
order_quantity: u32,
- decision: RadrootsTradeSettlementDecision,
+ decision: RadrootsOrderSettlementOutcome,
) -> String {
let economics = signed_order_request_economics(trade_order_id, order_quantity);
- let payload = RadrootsTradeSettlementDecisionEvent {
+ let payload = RadrootsOrderSettlementDecision {
order_id: trade_order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
seller_pubkey: seller_pubkey.to_owned(),
@@ -21019,20 +21004,17 @@ mod tests {
payment_event_id: payment_event_id.to_owned(),
quote_id: economics.quote_id.clone(),
quote_version: economics.quote_version,
- economics_digest: radroots_trade_order_economics_digest(&economics)
+ economics_digest: radroots_order_economics_digest(&economics)
.expect("k3436 economics digest"),
amount: economics.total.amount,
currency: economics.total.currency,
decision,
- reason: (decision == RadrootsTradeSettlementDecision::Rejected)
+ reason: (decision == RadrootsOrderSettlementOutcome::Rejected)
.then(|| "reference mismatch".to_owned()),
};
- let parts = active_trade_settlement_decision_event_build(
- request_event_id,
- payment_event_id,
- &payload,
- )
- .expect("k3436 draft should build");
+ let parts =
+ order_settlement_decision_event_build(request_event_id, payment_event_id, &payload)
+ .expect("k3436 draft should build");
let record_id = format!("app:signed_event:k3436:{event_key}");
let event_id = format!("event-{record_id}");
append_trade_signed_event_record(
@@ -21059,7 +21041,7 @@ mod tests {
order_quantity: u32,
) -> radroots_nostr::prelude::RadrootsNostrEvent {
let economics = signed_order_request_economics(trade_order_id, order_quantity);
- let payload = RadrootsTradePaymentRecorded {
+ let payload = RadrootsOrderPaymentRecord {
order_id: trade_order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
@@ -21069,20 +21051,17 @@ mod tests {
agreement_event_id: agreement_event_id.to_owned(),
quote_id: economics.quote_id.clone(),
quote_version: economics.quote_version,
- economics_digest: radroots_trade_order_economics_digest(&economics)
+ economics_digest: radroots_order_economics_digest(&economics)
.expect("relay payment economics digest"),
amount: economics.total.amount,
currency: economics.total.currency,
- method: RadrootsTradePaymentMethod::ManualTransfer,
+ method: RadrootsOrderPaymentMethod::ManualTransfer,
reference: Some("relay-memo-1".to_owned()),
paid_at: Some(1_774_000_050),
};
- let parts = active_trade_payment_recorded_event_build(
- request_event_id,
- agreement_event_id,
- &payload,
- )
- .expect("relay payment draft should build");
+ let parts =
+ order_payment_record_event_build(request_event_id, agreement_event_id, &payload)
+ .expect("relay payment draft should build");
radroots_nostr_build_event(parts.kind, parts.content, parts.tags)
.expect("relay payment builder")
@@ -21100,10 +21079,10 @@ mod tests {
buyer_pubkey: &str,
seller_pubkey: &str,
order_quantity: u32,
- decision: RadrootsTradeSettlementDecision,
+ decision: RadrootsOrderSettlementOutcome,
) -> radroots_nostr::prelude::RadrootsNostrEvent {
let economics = signed_order_request_economics(trade_order_id, order_quantity);
- let payload = RadrootsTradeSettlementDecisionEvent {
+ let payload = RadrootsOrderSettlementDecision {
order_id: trade_order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
seller_pubkey: seller_pubkey.to_owned(),
@@ -21114,20 +21093,17 @@ mod tests {
payment_event_id: payment_event_id.to_owned(),
quote_id: economics.quote_id.clone(),
quote_version: economics.quote_version,
- economics_digest: radroots_trade_order_economics_digest(&economics)
+ economics_digest: radroots_order_economics_digest(&economics)
.expect("relay k3436 economics digest"),
amount: economics.total.amount,
currency: economics.total.currency,
decision,
- reason: (decision == RadrootsTradeSettlementDecision::Rejected)
+ reason: (decision == RadrootsOrderSettlementOutcome::Rejected)
.then(|| "reference mismatch".to_owned()),
};
- let parts = active_trade_settlement_decision_event_build(
- request_event_id,
- payment_event_id,
- &payload,
- )
- .expect("relay k3436 draft should build");
+ let parts =
+ order_settlement_decision_event_build(request_event_id, payment_event_id, &payload)
+ .expect("relay k3436 draft should build");
radroots_nostr_build_event(parts.kind, parts.content, parts.tags)
.expect("relay k3436 builder")
@@ -21174,7 +21150,7 @@ mod tests {
listing_addr,
buyer_pubkey,
seller_pubkey,
- RadrootsActiveTradeFulfillmentState::ReadyForPickup,
+ RadrootsOrderFulfillmentState::ReadyForPickup,
)
}
@@ -21186,7 +21162,7 @@ mod tests {
listing_addr: &str,
buyer_pubkey: &str,
seller_pubkey: &str,
- status: RadrootsActiveTradeFulfillmentState,
+ status: RadrootsOrderFulfillmentState,
) -> String {
append_signed_order_fulfillment_record_with_status_and_key(
paths,
@@ -21210,16 +21186,16 @@ mod tests {
listing_addr: &str,
buyer_pubkey: &str,
seller_pubkey: &str,
- status: RadrootsActiveTradeFulfillmentState,
+ status: RadrootsOrderFulfillmentState,
) -> String {
- let payload = RadrootsTradeFulfillmentUpdated {
+ let payload = RadrootsOrderFulfillmentUpdate {
order_id: trade_order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
seller_pubkey: seller_pubkey.to_owned(),
status,
};
- let parts = radroots_sdk::trade::build_fulfillment_update_draft(
+ let parts = radroots_sdk::order::build_fulfillment_update_draft(
request_event_id,
prev_event_id,
&payload,
@@ -21251,14 +21227,14 @@ mod tests {
buyer_pubkey: &str,
seller_pubkey: &str,
) -> String {
- let payload = RadrootsTradeOrderCancelled {
+ let payload = RadrootsOrderCancellation {
order_id: trade_order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
seller_pubkey: seller_pubkey.to_owned(),
reason: "buyer cancelled order".to_owned(),
};
- let parts = radroots_sdk::trade::build_order_cancellation_draft(
+ let parts = radroots_sdk::order::build_order_cancellation_draft(
request_event_id,
prev_event_id,
&payload,
@@ -21291,7 +21267,7 @@ mod tests {
seller_pubkey: &str,
received: bool,
) -> String {
- let payload = RadrootsTradeBuyerReceipt {
+ let payload = RadrootsOrderReceipt {
order_id: trade_order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
@@ -21300,7 +21276,7 @@ mod tests {
issue: (!received).then(|| "items need review".to_owned()),
received_at: 1_774_000_030,
};
- let parts = radroots_sdk::trade::build_buyer_receipt_draft(
+ let parts = radroots_sdk::order::build_buyer_receipt_draft(
request_event_id,
prev_event_id,
&payload,
@@ -21332,7 +21308,7 @@ mod tests {
buyer_pubkey: &str,
seller_pubkey: &str,
) -> String {
- let payload = RadrootsTradeOrderRevisionProposed {
+ let payload = RadrootsOrderRevisionProposal {
revision_id: format!("revision-{event_key}"),
order_id: trade_order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
@@ -21344,7 +21320,7 @@ mod tests {
economics: revision_test_order_economics(),
reason: "harvest count updated".to_owned(),
};
- let parts = radroots_sdk::trade::build_order_revision_proposal_draft(
+ let parts = radroots_sdk::order::build_order_revision_proposal_draft(
request_event_id,
prev_event_id,
&payload,
@@ -21376,9 +21352,9 @@ mod tests {
listing_addr: &str,
buyer_pubkey: &str,
seller_pubkey: &str,
- decision: RadrootsTradeOrderRevisionDecision,
+ decision: RadrootsOrderRevisionOutcome,
) -> String {
- let payload = RadrootsTradeOrderRevisionDecisionEvent {
+ let payload = RadrootsOrderRevisionDecision {
revision_id: revision_id.to_owned(),
order_id: trade_order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
@@ -21388,7 +21364,7 @@ mod tests {
prev_event_id: proposal_event_id.to_owned(),
decision,
};
- let parts = radroots_sdk::trade::build_order_revision_decision_draft(
+ let parts = radroots_sdk::order::build_order_revision_decision_draft(
request_event_id,
proposal_event_id,
&payload,
@@ -21410,20 +21386,20 @@ mod tests {
event_id
}
- fn revision_test_order_items() -> Vec<RadrootsTradeOrderItem> {
- vec![RadrootsTradeOrderItem {
+ fn revision_test_order_items() -> Vec<RadrootsOrderItem> {
+ vec![RadrootsOrderItem {
bin_id: "seller-order-primary-bin".to_owned(),
bin_count: 3,
}]
}
- fn revision_test_order_economics() -> RadrootsTradeOrderEconomics {
- RadrootsTradeOrderEconomics {
+ fn revision_test_order_economics() -> RadrootsOrderEconomics {
+ RadrootsOrderEconomics {
quote_id: "quote-revision-test".to_owned(),
quote_version: 2,
- pricing_basis: RadrootsTradePricingBasis::ListingEvent,
+ pricing_basis: RadrootsOrderPricingBasis::ListingEvent,
currency: RadrootsCoreCurrency::USD,
- items: vec![RadrootsTradeOrderEconomicItem {
+ items: vec![RadrootsOrderEconomicItem {
bin_id: "seller-order-primary-bin".to_owned(),
bin_count: 3,
quantity_amount: RadrootsCoreDecimal::from(1u32),
diff --git a/crates/desktop/src/source_guards.rs b/crates/desktop/src/source_guards.rs
@@ -1145,21 +1145,21 @@ const FORBIDDEN_PRODUCTION_EVENT_KIND_LITERALS: &[(&str, &str)] = &[
("30340", "KIND_FARM"),
("30402", "KIND_LISTING"),
("30403", "KIND_LISTING_DRAFT"),
- ("3422", "KIND_TRADE_ORDER_REQUEST"),
- ("3423", "KIND_TRADE_ORDER_DECISION"),
- ("3424", "KIND_TRADE_ORDER_REVISION"),
- ("3425", "KIND_TRADE_ORDER_REVISION_RESPONSE"),
+ ("3422", "KIND_ORDER_REQUEST"),
+ ("3423", "KIND_ORDER_DECISION"),
+ ("3424", "KIND_ORDER_REVISION_PROPOSAL"),
+ ("3425", "KIND_ORDER_REVISION_DECISION"),
("3426", "KIND_TRADE_QUESTION"),
("3427", "KIND_TRADE_ANSWER"),
("3428", "KIND_TRADE_DISCOUNT_REQUEST"),
("3429", "KIND_TRADE_DISCOUNT_OFFER"),
("3430", "KIND_TRADE_DISCOUNT_ACCEPT"),
- ("3431", "KIND_TRADE_FORBIDDEN_3431"),
- ("3432", "KIND_TRADE_CANCEL"),
- ("3433", "KIND_TRADE_FULFILLMENT_UPDATE"),
- ("3434", "KIND_TRADE_RECEIPT"),
- ("3435", "KIND_TRADE_PAYMENT_RECORDED"),
- ("3436", "KIND_TRADE_SETTLEMENT_DECISION"),
+ ("3431", "RESERVED_ORDER_KIND_3431"),
+ ("3432", "KIND_ORDER_CANCELLATION"),
+ ("3433", "KIND_ORDER_FULFILLMENT_UPDATE"),
+ ("3434", "KIND_ORDER_RECEIPT"),
+ ("3435", "KIND_ORDER_PAYMENT_RECORD"),
+ ("3436", "KIND_ORDER_SETTLEMENT_DECISION"),
("3440", "KIND_TRADE_VALIDATION_RECEIPT"),
];
diff --git a/crates/store/src/interop.rs b/crates/store/src/interop.rs
@@ -11,23 +11,28 @@ use radroots_events::{
RadrootsNostrEvent,
kinds::{
KIND_FARM as RADROOTS_KIND_FARM, KIND_LISTING as RADROOTS_KIND_LISTING,
- KIND_LISTING_DRAFT as RADROOTS_KIND_LISTING_DRAFT, KIND_TRADE_CANCEL,
- KIND_TRADE_FULFILLMENT_UPDATE, KIND_TRADE_ORDER_REQUEST, KIND_TRADE_ORDER_RESPONSE,
- KIND_TRADE_ORDER_REVISION, KIND_TRADE_ORDER_REVISION_RESPONSE, KIND_TRADE_PAYMENT_RECORDED,
- KIND_TRADE_RECEIPT, KIND_TRADE_SETTLEMENT_DECISION, KIND_TRADE_VALIDATION_RECEIPT,
+ KIND_LISTING_DRAFT as RADROOTS_KIND_LISTING_DRAFT,
+ KIND_ORDER_CANCELLATION as RADROOTS_KIND_ORDER_CANCELLATION,
+ KIND_ORDER_DECISION as RADROOTS_KIND_ORDER_DECISION,
+ KIND_ORDER_FULFILLMENT_UPDATE as RADROOTS_KIND_ORDER_FULFILLMENT_UPDATE,
+ KIND_ORDER_PAYMENT_RECORD as RADROOTS_KIND_ORDER_PAYMENT_RECORD,
+ KIND_ORDER_RECEIPT as RADROOTS_KIND_ORDER_RECEIPT,
+ KIND_ORDER_REQUEST as RADROOTS_KIND_ORDER_REQUEST,
+ KIND_ORDER_REVISION_DECISION as RADROOTS_KIND_ORDER_REVISION_DECISION,
+ KIND_ORDER_REVISION_PROPOSAL as RADROOTS_KIND_ORDER_REVISION_PROPOSAL,
+ KIND_ORDER_SETTLEMENT_DECISION as RADROOTS_KIND_ORDER_SETTLEMENT_DECISION,
+ KIND_TRADE_VALIDATION_RECEIPT,
},
- trade::{
- RadrootsTradeOrderEconomics, RadrootsTradeOrderItem, RadrootsTradeOrderRequested,
- RadrootsTradeOrderRevisionDecision,
+ order::{
+ RadrootsOrderEconomics, RadrootsOrderItem, RadrootsOrderRequest,
+ RadrootsOrderRevisionOutcome,
},
};
-use radroots_events_codec::trade::{
- active_trade_buyer_receipt_from_event, active_trade_event_context_from_tags,
- active_trade_fulfillment_update_from_event, active_trade_order_cancel_from_event,
- active_trade_order_decision_from_event, active_trade_order_request_from_event,
- active_trade_order_revision_decision_from_event,
- active_trade_order_revision_proposal_from_event, active_trade_payment_recorded_from_event,
- active_trade_settlement_decision_from_event,
+use radroots_events_codec::order::{
+ order_cancellation_from_event, order_decision_from_event, order_event_context_from_tags,
+ order_fulfillment_update_from_event, order_payment_record_from_event, order_receipt_from_event,
+ order_request_from_event, order_revision_decision_from_event,
+ order_revision_proposal_from_event, order_settlement_decision_from_event,
};
use radroots_local_events::{
LocalEventRecord, LocalEventsStore, LocalRecordFamily, LocalRecordStatus, PublishOutboxStatus,
@@ -35,12 +40,10 @@ use radroots_local_events::{
};
use radroots_sql_core::{SqlExecutor, SqliteExecutor};
use radroots_trade::order::{
- RadrootsActiveOrderCancellationRecord, RadrootsActiveOrderDecisionRecord,
- RadrootsActiveOrderFulfillmentRecord, RadrootsActiveOrderPaymentRecord,
- RadrootsActiveOrderProjection, RadrootsActiveOrderReceiptRecord,
- RadrootsActiveOrderRequestRecord, RadrootsActiveOrderRevisionDecisionRecord,
- RadrootsActiveOrderRevisionProposalRecord, RadrootsActiveOrderSettlementRecord,
- reduce_active_order_events,
+ RadrootsOrderCancellationRecord, RadrootsOrderDecisionRecord, RadrootsOrderFulfillmentRecord,
+ RadrootsOrderPaymentEventRecord, RadrootsOrderProjection, RadrootsOrderReceiptRecord,
+ RadrootsOrderRequestRecord, RadrootsOrderRevisionDecisionRecord,
+ RadrootsOrderRevisionProposalRecord, RadrootsOrderSettlementRecord, reduce_order_events,
};
use radroots_trade::validation_receipt::{
RadrootsTradeValidationReceipt, RadrootsValidationReceiptTags, validation_receipt_from_event,
@@ -57,15 +60,15 @@ const APP_LOCAL_INTEROP_CURSOR_ID: &str = "radroots_app_sqlite_projection_v1";
const KIND_FARM: i64 = RADROOTS_KIND_FARM as i64;
const KIND_LISTING: i64 = RADROOTS_KIND_LISTING as i64;
const KIND_LISTING_DRAFT: i64 = RADROOTS_KIND_LISTING_DRAFT as i64;
-const KIND_ORDER_REQUEST: i64 = KIND_TRADE_ORDER_REQUEST as i64;
-const KIND_ORDER_DECISION: i64 = KIND_TRADE_ORDER_RESPONSE as i64;
-const KIND_ORDER_REVISION: i64 = KIND_TRADE_ORDER_REVISION as i64;
-const KIND_ORDER_REVISION_DECISION: i64 = KIND_TRADE_ORDER_REVISION_RESPONSE as i64;
-const KIND_ORDER_CANCEL: i64 = KIND_TRADE_CANCEL as i64;
-const KIND_ORDER_FULFILLMENT: i64 = KIND_TRADE_FULFILLMENT_UPDATE as i64;
-const KIND_ORDER_RECEIPT: i64 = KIND_TRADE_RECEIPT as i64;
-const KIND_ORDER_PAYMENT: i64 = KIND_TRADE_PAYMENT_RECORDED as i64;
-const KIND_ORDER_SETTLEMENT: i64 = KIND_TRADE_SETTLEMENT_DECISION as i64;
+const KIND_ORDER_REQUEST: i64 = RADROOTS_KIND_ORDER_REQUEST as i64;
+const KIND_ORDER_DECISION: i64 = RADROOTS_KIND_ORDER_DECISION as i64;
+const KIND_ORDER_REVISION: i64 = RADROOTS_KIND_ORDER_REVISION_PROPOSAL as i64;
+const KIND_ORDER_REVISION_DECISION: i64 = RADROOTS_KIND_ORDER_REVISION_DECISION as i64;
+const KIND_ORDER_CANCEL: i64 = RADROOTS_KIND_ORDER_CANCELLATION as i64;
+const KIND_ORDER_FULFILLMENT: i64 = RADROOTS_KIND_ORDER_FULFILLMENT_UPDATE as i64;
+const KIND_ORDER_RECEIPT: i64 = RADROOTS_KIND_ORDER_RECEIPT as i64;
+const KIND_ORDER_PAYMENT: i64 = RADROOTS_KIND_ORDER_PAYMENT_RECORD as i64;
+const KIND_ORDER_SETTLEMENT: i64 = RADROOTS_KIND_ORDER_SETTLEMENT_DECISION as i64;
const KIND_VALIDATION_RECEIPT: i64 = KIND_TRADE_VALIDATION_RECEIPT as i64;
const ACTIVE_ORDER_EVENT_KINDS: [i64; 9] = [
KIND_ORDER_REQUEST,
@@ -1184,7 +1187,7 @@ impl<'a> AppLocalInteropRepository<'a> {
let requests = buckets.requests.clone();
let revision_proposals = buckets.revision_proposals.clone();
let revision_decisions = buckets.revision_decisions.clone();
- let projection = reduce_active_order_events(
+ let projection = reduce_order_events(
raw_order_id.as_str(),
buckets.requests,
buckets.decisions,
@@ -1223,7 +1226,7 @@ impl<'a> AppLocalInteropRepository<'a> {
fn upsert_order_request(
&self,
record: &LocalEventRecord,
- payload: &RadrootsTradeOrderRequested,
+ payload: &RadrootsOrderRequest,
) -> Result<OrderId, AppSqliteError> {
let existing_listing =
self.existing_listing_projection(Some(payload.listing_addr.as_str()))?;
@@ -1280,7 +1283,7 @@ impl<'a> AppLocalInteropRepository<'a> {
fn apply_active_order_projection(
&self,
order_id: OrderId,
- projection: &RadrootsActiveOrderProjection,
+ projection: &RadrootsOrderProjection,
revision: TradeRevisionStatus,
agreement_source: Option<&ActiveOrderAgreementSource>,
) -> Result<(), AppSqliteError> {
@@ -1435,7 +1438,7 @@ impl<'a> AppLocalInteropRepository<'a> {
else {
return Ok(ValidationReceiptOrderAttachment::Pending);
};
- let Ok(envelope) = active_trade_order_request_from_event(&root_event) else {
+ let Ok(envelope) = order_request_from_event(&root_event) else {
return Ok(ValidationReceiptOrderAttachment::Rejected);
};
if envelope.payload.order_id != tags.order_id {
@@ -1493,7 +1496,7 @@ impl<'a> AppLocalInteropRepository<'a> {
fn replace_order_request_lines(
&self,
order_id: OrderId,
- payload: &RadrootsTradeOrderRequested,
+ payload: &RadrootsOrderRequest,
existing_listing: Option<&ExistingListingProjection>,
record: &LocalEventRecord,
) -> Result<(), AppSqliteError> {
@@ -2700,8 +2703,8 @@ struct ExistingListingProjection {
struct ActiveOrderAgreementSource {
listing_addr: String,
seller_pubkey: String,
- items: Vec<RadrootsTradeOrderItem>,
- economics: RadrootsTradeOrderEconomics,
+ items: Vec<RadrootsOrderItem>,
+ economics: RadrootsOrderEconomics,
}
#[derive(Clone, Debug, Eq, PartialEq)]
@@ -2712,15 +2715,15 @@ struct ExistingOrderLineMetadata {
#[derive(Clone, Debug, Eq, PartialEq)]
enum ActiveOrderEvidence {
- Request(RadrootsActiveOrderRequestRecord),
- Decision(RadrootsActiveOrderDecisionRecord),
- RevisionProposal(RadrootsActiveOrderRevisionProposalRecord),
- RevisionDecision(RadrootsActiveOrderRevisionDecisionRecord),
- Fulfillment(RadrootsActiveOrderFulfillmentRecord),
- Cancellation(RadrootsActiveOrderCancellationRecord),
- Receipt(RadrootsActiveOrderReceiptRecord),
- Payment(RadrootsActiveOrderPaymentRecord),
- Settlement(RadrootsActiveOrderSettlementRecord),
+ Request(RadrootsOrderRequestRecord),
+ Decision(RadrootsOrderDecisionRecord),
+ RevisionProposal(RadrootsOrderRevisionProposalRecord),
+ RevisionDecision(RadrootsOrderRevisionDecisionRecord),
+ Fulfillment(RadrootsOrderFulfillmentRecord),
+ Cancellation(RadrootsOrderCancellationRecord),
+ Receipt(RadrootsOrderReceiptRecord),
+ Payment(RadrootsOrderPaymentEventRecord),
+ Settlement(RadrootsOrderSettlementRecord),
}
impl ActiveOrderEvidence {
@@ -2796,15 +2799,15 @@ impl ActiveOrderEvidence {
#[derive(Clone, Debug, Default, Eq, PartialEq)]
struct ActiveOrderEvidenceBuckets {
- requests: Vec<RadrootsActiveOrderRequestRecord>,
- decisions: Vec<RadrootsActiveOrderDecisionRecord>,
- revision_proposals: Vec<RadrootsActiveOrderRevisionProposalRecord>,
- revision_decisions: Vec<RadrootsActiveOrderRevisionDecisionRecord>,
- fulfillments: Vec<RadrootsActiveOrderFulfillmentRecord>,
- cancellations: Vec<RadrootsActiveOrderCancellationRecord>,
- receipts: Vec<RadrootsActiveOrderReceiptRecord>,
- payments: Vec<RadrootsActiveOrderPaymentRecord>,
- settlements: Vec<RadrootsActiveOrderSettlementRecord>,
+ requests: Vec<RadrootsOrderRequestRecord>,
+ decisions: Vec<RadrootsOrderDecisionRecord>,
+ revision_proposals: Vec<RadrootsOrderRevisionProposalRecord>,
+ revision_decisions: Vec<RadrootsOrderRevisionDecisionRecord>,
+ fulfillments: Vec<RadrootsOrderFulfillmentRecord>,
+ cancellations: Vec<RadrootsOrderCancellationRecord>,
+ receipts: Vec<RadrootsOrderReceiptRecord>,
+ payments: Vec<RadrootsOrderPaymentEventRecord>,
+ settlements: Vec<RadrootsOrderSettlementRecord>,
}
impl ActiveOrderEvidenceBuckets {
@@ -2982,36 +2985,30 @@ fn active_order_event_kind(kind: i64) -> bool {
fn active_order_evidence_from_event(event: &RadrootsNostrEvent) -> Option<ActiveOrderEvidence> {
match i64::from(event.kind) {
KIND_ORDER_REQUEST => {
- let envelope = active_trade_order_request_from_event(event).ok()?;
- Some(ActiveOrderEvidence::Request(
- RadrootsActiveOrderRequestRecord {
- event_id: event.id.clone(),
- author_pubkey: event.author.clone(),
- payload: envelope.payload,
- },
- ))
+ let envelope = order_request_from_event(event).ok()?;
+ Some(ActiveOrderEvidence::Request(RadrootsOrderRequestRecord {
+ event_id: event.id.clone(),
+ author_pubkey: event.author.clone(),
+ payload: envelope.payload,
+ }))
}
KIND_ORDER_DECISION => {
- let envelope = active_trade_order_decision_from_event(event).ok()?;
- let context =
- active_trade_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
- Some(ActiveOrderEvidence::Decision(
- RadrootsActiveOrderDecisionRecord {
- event_id: event.id.clone(),
- author_pubkey: event.author.clone(),
- counterparty_pubkey: context.counterparty_pubkey,
- root_event_id: context.root_event_id?,
- prev_event_id: context.prev_event_id?,
- payload: envelope.payload,
- },
- ))
+ let envelope = order_decision_from_event(event).ok()?;
+ let context = order_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
+ Some(ActiveOrderEvidence::Decision(RadrootsOrderDecisionRecord {
+ event_id: event.id.clone(),
+ author_pubkey: event.author.clone(),
+ counterparty_pubkey: context.counterparty_pubkey,
+ root_event_id: context.root_event_id?,
+ prev_event_id: context.prev_event_id?,
+ payload: envelope.payload,
+ }))
}
KIND_ORDER_REVISION => {
- let envelope = active_trade_order_revision_proposal_from_event(event).ok()?;
- let context =
- active_trade_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
+ let envelope = order_revision_proposal_from_event(event).ok()?;
+ let context = order_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
Some(ActiveOrderEvidence::RevisionProposal(
- RadrootsActiveOrderRevisionProposalRecord {
+ RadrootsOrderRevisionProposalRecord {
event_id: event.id.clone(),
author_pubkey: event.author.clone(),
counterparty_pubkey: context.counterparty_pubkey,
@@ -3022,11 +3019,10 @@ fn active_order_evidence_from_event(event: &RadrootsNostrEvent) -> Option<Active
))
}
KIND_ORDER_REVISION_DECISION => {
- let envelope = active_trade_order_revision_decision_from_event(event).ok()?;
- let context =
- active_trade_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
+ let envelope = order_revision_decision_from_event(event).ok()?;
+ let context = order_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
Some(ActiveOrderEvidence::RevisionDecision(
- RadrootsActiveOrderRevisionDecisionRecord {
+ RadrootsOrderRevisionDecisionRecord {
event_id: event.id.clone(),
author_pubkey: event.author.clone(),
counterparty_pubkey: context.counterparty_pubkey,
@@ -3037,11 +3033,10 @@ fn active_order_evidence_from_event(event: &RadrootsNostrEvent) -> Option<Active
))
}
KIND_ORDER_CANCEL => {
- let envelope = active_trade_order_cancel_from_event(event).ok()?;
- let context =
- active_trade_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
+ let envelope = order_cancellation_from_event(event).ok()?;
+ let context = order_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
Some(ActiveOrderEvidence::Cancellation(
- RadrootsActiveOrderCancellationRecord {
+ RadrootsOrderCancellationRecord {
event_id: event.id.clone(),
author_pubkey: event.author.clone(),
counterparty_pubkey: context.counterparty_pubkey,
@@ -3052,11 +3047,10 @@ fn active_order_evidence_from_event(event: &RadrootsNostrEvent) -> Option<Active
))
}
KIND_ORDER_FULFILLMENT => {
- let envelope = active_trade_fulfillment_update_from_event(event).ok()?;
- let context =
- active_trade_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
+ let envelope = order_fulfillment_update_from_event(event).ok()?;
+ let context = order_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
Some(ActiveOrderEvidence::Fulfillment(
- RadrootsActiveOrderFulfillmentRecord {
+ RadrootsOrderFulfillmentRecord {
event_id: event.id.clone(),
author_pubkey: event.author.clone(),
counterparty_pubkey: context.counterparty_pubkey,
@@ -3067,26 +3061,22 @@ fn active_order_evidence_from_event(event: &RadrootsNostrEvent) -> Option<Active
))
}
KIND_ORDER_RECEIPT => {
- let envelope = active_trade_buyer_receipt_from_event(event).ok()?;
- let context =
- active_trade_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
- Some(ActiveOrderEvidence::Receipt(
- RadrootsActiveOrderReceiptRecord {
- event_id: event.id.clone(),
- author_pubkey: event.author.clone(),
- counterparty_pubkey: context.counterparty_pubkey,
- root_event_id: context.root_event_id?,
- prev_event_id: context.prev_event_id?,
- payload: envelope.payload,
- },
- ))
+ let envelope = order_receipt_from_event(event).ok()?;
+ let context = order_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
+ Some(ActiveOrderEvidence::Receipt(RadrootsOrderReceiptRecord {
+ event_id: event.id.clone(),
+ author_pubkey: event.author.clone(),
+ counterparty_pubkey: context.counterparty_pubkey,
+ root_event_id: context.root_event_id?,
+ prev_event_id: context.prev_event_id?,
+ payload: envelope.payload,
+ }))
}
KIND_ORDER_PAYMENT => {
- let envelope = active_trade_payment_recorded_from_event(event).ok()?;
- let context =
- active_trade_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
+ let envelope = order_payment_record_from_event(event).ok()?;
+ let context = order_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
Some(ActiveOrderEvidence::Payment(
- RadrootsActiveOrderPaymentRecord {
+ RadrootsOrderPaymentEventRecord {
event_id: event.id.clone(),
author_pubkey: event.author.clone(),
counterparty_pubkey: context.counterparty_pubkey,
@@ -3097,11 +3087,10 @@ fn active_order_evidence_from_event(event: &RadrootsNostrEvent) -> Option<Active
))
}
KIND_ORDER_SETTLEMENT => {
- let envelope = active_trade_settlement_decision_from_event(event).ok()?;
- let context =
- active_trade_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
+ let envelope = order_settlement_decision_from_event(event).ok()?;
+ let context = order_event_context_from_tags(envelope.message_type, &event.tags).ok()?;
Some(ActiveOrderEvidence::Settlement(
- RadrootsActiveOrderSettlementRecord {
+ RadrootsOrderSettlementRecord {
event_id: event.id.clone(),
author_pubkey: event.author.clone(),
counterparty_pubkey: context.counterparty_pubkey,
@@ -3310,9 +3299,9 @@ fn projected_order_id(order_id: &str, buyer_pubkey: &str) -> OrderId {
}
fn active_order_revision_status(
- projection: &RadrootsActiveOrderProjection,
- revision_proposals: &[RadrootsActiveOrderRevisionProposalRecord],
- revision_decisions: &[RadrootsActiveOrderRevisionDecisionRecord],
+ projection: &RadrootsOrderProjection,
+ revision_proposals: &[RadrootsOrderRevisionProposalRecord],
+ revision_decisions: &[RadrootsOrderRevisionDecisionRecord],
) -> TradeRevisionStatus {
let Some(mut parent_event_id) = projection.decision_event_id.clone() else {
return TradeRevisionStatus::None;
@@ -3341,20 +3330,18 @@ fn active_order_revision_status(
return TradeRevisionStatus::None;
}
status = match &decision.payload.decision {
- RadrootsTradeOrderRevisionDecision::Accepted => TradeRevisionStatus::Updated,
- RadrootsTradeOrderRevisionDecision::Declined { .. } => {
- TradeRevisionStatus::KeptAsPlaced
- }
+ RadrootsOrderRevisionOutcome::Accepted => TradeRevisionStatus::Updated,
+ RadrootsOrderRevisionOutcome::Declined { .. } => TradeRevisionStatus::KeptAsPlaced,
};
parent_event_id.clone_from(&decision.event_id);
}
}
fn active_order_agreement_source(
- request: &RadrootsTradeOrderRequested,
- projection: &RadrootsActiveOrderProjection,
- revision_proposals: &[RadrootsActiveOrderRevisionProposalRecord],
- revision_decisions: &[RadrootsActiveOrderRevisionDecisionRecord],
+ request: &RadrootsOrderRequest,
+ projection: &RadrootsOrderProjection,
+ revision_proposals: &[RadrootsOrderRevisionProposalRecord],
+ revision_decisions: &[RadrootsOrderRevisionDecisionRecord],
) -> ActiveOrderAgreementSource {
if let Some(agreement_event_id) = projection.agreement_event_id.as_deref()
&& projection.decision_event_id.as_deref() != Some(agreement_event_id)
@@ -3362,7 +3349,7 @@ fn active_order_agreement_source(
decision.event_id == agreement_event_id
&& matches!(
&decision.payload.decision,
- RadrootsTradeOrderRevisionDecision::Accepted
+ RadrootsOrderRevisionOutcome::Accepted
)
})
&& let Some(revision_proposal) = revision_proposals.iter().find(|proposal| {
@@ -3386,9 +3373,9 @@ fn active_order_agreement_source(
}
fn order_line_product_id(
- payload: &RadrootsTradeOrderRequested,
+ payload: &RadrootsOrderRequest,
existing_listing: Option<&ExistingListingProjection>,
- item: &radroots_events::trade::RadrootsTradeOrderItem,
+ item: &radroots_events::order::RadrootsOrderItem,
) -> ProductId {
order_agreement_line_product_id(
payload.listing_addr.as_str(),
@@ -3402,7 +3389,7 @@ fn order_agreement_line_product_id(
listing_addr: &str,
seller_pubkey: &str,
existing_listing: Option<&ExistingListingProjection>,
- item: &RadrootsTradeOrderItem,
+ item: &RadrootsOrderItem,
) -> ProductId {
if let Some(existing_listing) = existing_listing
&& existing_listing
@@ -3871,28 +3858,25 @@ mod tests {
};
use radroots_events::{
RadrootsNostrEvent, RadrootsNostrEventPtr,
- kinds::KIND_TRADE_RECEIPT,
- trade::{
- RadrootsActiveTradeFulfillmentState, RadrootsTradeBuyerReceipt,
- RadrootsTradeFulfillmentUpdated, RadrootsTradeInventoryCommitment,
- RadrootsTradeOrderCancelled, RadrootsTradeOrderDecision,
- RadrootsTradeOrderDecisionEvent, RadrootsTradeOrderEconomicItem,
- RadrootsTradeOrderEconomicLine, RadrootsTradeOrderEconomics, RadrootsTradeOrderItem,
- RadrootsTradeOrderRequested, RadrootsTradeOrderRevisionDecision,
- RadrootsTradeOrderRevisionDecisionEvent, RadrootsTradeOrderRevisionProposed,
- RadrootsTradePaymentMethod, RadrootsTradePaymentRecorded, RadrootsTradePricingBasis,
- RadrootsTradeSettlementDecision, RadrootsTradeSettlementDecisionEvent,
+ kinds::KIND_ORDER_RECEIPT,
+ order::{
+ RadrootsOrderCancellation, RadrootsOrderDecision, RadrootsOrderDecisionOutcome,
+ RadrootsOrderEconomicItem, RadrootsOrderEconomicLine, RadrootsOrderEconomics,
+ RadrootsOrderFulfillmentState, RadrootsOrderFulfillmentUpdate,
+ RadrootsOrderInventoryCommitment, RadrootsOrderItem, RadrootsOrderPaymentMethod,
+ RadrootsOrderPaymentRecord, RadrootsOrderPricingBasis, RadrootsOrderReceipt,
+ RadrootsOrderRequest, RadrootsOrderRevisionDecision, RadrootsOrderRevisionOutcome,
+ RadrootsOrderRevisionProposal, RadrootsOrderSettlementDecision,
+ RadrootsOrderSettlementOutcome,
},
};
use radroots_events_codec::{
- trade::{
- active_trade_buyer_receipt_event_build, active_trade_fulfillment_update_event_build,
- active_trade_order_cancel_event_build, active_trade_order_decision_event_build,
- active_trade_order_request_event_build,
- active_trade_order_revision_decision_event_build,
- active_trade_order_revision_proposal_event_build,
- active_trade_payment_recorded_event_build,
- active_trade_settlement_decision_event_build,
+ order::{
+ order_cancellation_event_build, order_decision_event_build,
+ order_fulfillment_update_event_build, order_payment_record_event_build,
+ order_receipt_event_build, order_request_event_build,
+ order_revision_decision_event_build, order_revision_proposal_event_build,
+ order_settlement_decision_event_build,
},
wire::WireEventParts,
};
@@ -3902,7 +3886,7 @@ mod tests {
};
use radroots_sql_core::SqliteExecutor;
use radroots_trade::{
- order::radroots_trade_order_economics_digest,
+ order::radroots_order_economics_digest,
validation_receipt::{
RadrootsTradeValidationReceipt, RadrootsValidationReceiptProof,
RadrootsValidationReceiptProofSystem, RadrootsValidationReceiptResult,
@@ -4384,22 +4368,22 @@ mod tests {
listing_addr: &str,
buyer_pubkey: &str,
seller_pubkey: &str,
- ) -> RadrootsTradeOrderRequested {
- RadrootsTradeOrderRequested {
+ ) -> RadrootsOrderRequest {
+ RadrootsOrderRequest {
order_id: order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
seller_pubkey: seller_pubkey.to_owned(),
- items: vec![RadrootsTradeOrderItem {
+ items: vec![RadrootsOrderItem {
bin_id: "bin-1".to_owned(),
bin_count: 2,
}],
- economics: RadrootsTradeOrderEconomics {
+ economics: RadrootsOrderEconomics {
quote_id: format!("quote-{order_id}"),
quote_version: 1,
- pricing_basis: RadrootsTradePricingBasis::ListingEvent,
+ pricing_basis: RadrootsOrderPricingBasis::ListingEvent,
currency: RadrootsCoreCurrency::USD,
- items: vec![RadrootsTradeOrderEconomicItem {
+ items: vec![RadrootsOrderEconomicItem {
bin_id: "bin-1".to_owned(),
bin_count: 2,
quantity_amount: decimal("1"),
@@ -4408,8 +4392,8 @@ mod tests {
unit_price_currency: RadrootsCoreCurrency::USD,
line_subtotal: usd("16"),
}],
- discounts: Vec::<RadrootsTradeOrderEconomicLine>::new(),
- adjustments: Vec::<RadrootsTradeOrderEconomicLine>::new(),
+ discounts: Vec::<RadrootsOrderEconomicLine>::new(),
+ adjustments: Vec::<RadrootsOrderEconomicLine>::new(),
subtotal: usd("16"),
discount_total: usd("0"),
adjustment_total: usd("0"),
@@ -4423,14 +4407,14 @@ mod tests {
listing_addr: &str,
buyer_pubkey: &str,
seller_pubkey: &str,
- ) -> RadrootsTradeOrderDecisionEvent {
- RadrootsTradeOrderDecisionEvent {
+ ) -> RadrootsOrderDecision {
+ RadrootsOrderDecision {
order_id: order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
seller_pubkey: seller_pubkey.to_owned(),
- decision: RadrootsTradeOrderDecision::Accepted {
- inventory_commitments: vec![RadrootsTradeInventoryCommitment {
+ decision: RadrootsOrderDecisionOutcome::Accepted {
+ inventory_commitments: vec![RadrootsOrderInventoryCommitment {
bin_id: "bin-1".to_owned(),
bin_count: 2,
}],
@@ -4443,13 +4427,13 @@ mod tests {
listing_addr: &str,
buyer_pubkey: &str,
seller_pubkey: &str,
- ) -> RadrootsTradeOrderDecisionEvent {
- RadrootsTradeOrderDecisionEvent {
+ ) -> RadrootsOrderDecision {
+ RadrootsOrderDecision {
order_id: order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
seller_pubkey: seller_pubkey.to_owned(),
- decision: RadrootsTradeOrderDecision::Declined {
+ decision: RadrootsOrderDecisionOutcome::Declined {
reason: "not available for this pickup".to_owned(),
},
}
@@ -4463,7 +4447,7 @@ mod tests {
seller_pubkey: &str,
root_event_id: &str,
prev_event_id: &str,
- ) -> RadrootsTradeOrderRevisionProposed {
+ ) -> RadrootsOrderRevisionProposal {
let mut request =
order_request_payload(order_id, listing_addr, buyer_pubkey, seller_pubkey);
request.items[0].bin_count = 3;
@@ -4473,7 +4457,7 @@ mod tests {
request.economics.items[0].line_subtotal = usd("24");
request.economics.subtotal = usd("24");
request.economics.total = usd("24");
- RadrootsTradeOrderRevisionProposed {
+ RadrootsOrderRevisionProposal {
revision_id: revision_id.to_owned(),
order_id: order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
@@ -4495,9 +4479,9 @@ mod tests {
seller_pubkey: &str,
root_event_id: &str,
prev_event_id: &str,
- decision: RadrootsTradeOrderRevisionDecision,
- ) -> RadrootsTradeOrderRevisionDecisionEvent {
- RadrootsTradeOrderRevisionDecisionEvent {
+ decision: RadrootsOrderRevisionOutcome,
+ ) -> RadrootsOrderRevisionDecision {
+ RadrootsOrderRevisionDecision {
revision_id: revision_id.to_owned(),
order_id: order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
@@ -4514,9 +4498,9 @@ mod tests {
listing_addr: &str,
buyer_pubkey: &str,
seller_pubkey: &str,
- status: RadrootsActiveTradeFulfillmentState,
- ) -> RadrootsTradeFulfillmentUpdated {
- RadrootsTradeFulfillmentUpdated {
+ status: RadrootsOrderFulfillmentState,
+ ) -> RadrootsOrderFulfillmentUpdate {
+ RadrootsOrderFulfillmentUpdate {
order_id: order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
@@ -4530,8 +4514,8 @@ mod tests {
listing_addr: &str,
buyer_pubkey: &str,
seller_pubkey: &str,
- ) -> RadrootsTradeOrderCancelled {
- RadrootsTradeOrderCancelled {
+ ) -> RadrootsOrderCancellation {
+ RadrootsOrderCancellation {
order_id: order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
@@ -4546,8 +4530,8 @@ mod tests {
buyer_pubkey: &str,
seller_pubkey: &str,
received: bool,
- ) -> RadrootsTradeBuyerReceipt {
- RadrootsTradeBuyerReceipt {
+ ) -> RadrootsOrderReceipt {
+ RadrootsOrderReceipt {
order_id: order_id.to_owned(),
listing_addr: listing_addr.to_owned(),
buyer_pubkey: buyer_pubkey.to_owned(),
@@ -4624,7 +4608,7 @@ mod tests {
buyer_pubkey.as_str(),
seller_pubkey.as_str(),
);
- let request_parts = active_trade_order_request_event_build(
+ let request_parts = order_request_event_build(
&listing_event_ptr(format!("{label}-listing-event").as_str()),
&request_payload,
)
@@ -4656,7 +4640,7 @@ mod tests {
buyer_pubkey.as_str(),
seller_pubkey.as_str(),
);
- let decision_parts = active_trade_order_decision_event_build(
+ let decision_parts = order_decision_event_build(
request_event.id.as_str(),
request_event.id.as_str(),
&decision_payload,
@@ -4685,9 +4669,9 @@ mod tests {
listing_addr.as_str(),
buyer_pubkey.as_str(),
seller_pubkey.as_str(),
- RadrootsActiveTradeFulfillmentState::ReadyForPickup,
+ RadrootsOrderFulfillmentState::ReadyForPickup,
);
- let fulfillment_parts = active_trade_fulfillment_update_event_build(
+ let fulfillment_parts = order_fulfillment_update_event_build(
request_event.id.as_str(),
decision_event.id.as_str(),
&fulfillment_payload,
@@ -4766,11 +4750,9 @@ mod tests {
buyer_pubkey.as_str(),
seller_pubkey.as_str(),
);
- let request_parts = active_trade_order_request_event_build(
- &listing_event_ptr(&listing_event_id),
- &request_payload,
- )
- .expect("build validation order request");
+ let request_parts =
+ order_request_event_build(&listing_event_ptr(&listing_event_id), &request_payload)
+ .expect("build validation order request");
let request_event = event_from_parts_at(
request_event_id.as_str(),
buyer_pubkey.as_str(),
@@ -4796,7 +4778,7 @@ mod tests {
buyer_pubkey.as_str(),
seller_pubkey.as_str(),
);
- let decision_parts = active_trade_order_decision_event_build(
+ let decision_parts = order_decision_event_build(
request_event_id.as_str(),
request_event_id.as_str(),
&decision_payload,
@@ -4838,12 +4820,12 @@ mod tests {
}
fn payment_recorded_payload(
- request: &RadrootsTradeOrderRequested,
+ request: &RadrootsOrderRequest,
root_event_id: &str,
previous_event_id: &str,
agreement_event_id: &str,
- ) -> RadrootsTradePaymentRecorded {
- RadrootsTradePaymentRecorded {
+ ) -> RadrootsOrderPaymentRecord {
+ RadrootsOrderPaymentRecord {
order_id: request.order_id.clone(),
listing_addr: request.listing_addr.clone(),
buyer_pubkey: request.buyer_pubkey.clone(),
@@ -4853,27 +4835,27 @@ mod tests {
agreement_event_id: agreement_event_id.to_owned(),
quote_id: request.economics.quote_id.clone(),
quote_version: request.economics.quote_version,
- economics_digest: radroots_trade_order_economics_digest(&request.economics)
+ economics_digest: radroots_order_economics_digest(&request.economics)
.expect("order economics digest should encode"),
amount: request.economics.total.amount,
currency: request.economics.total.currency,
- method: RadrootsTradePaymentMethod::ManualTransfer,
+ method: RadrootsOrderPaymentMethod::ManualTransfer,
reference: Some("manual reference".to_owned()),
paid_at: Some(1_777_665_800),
}
}
fn settlement_decision_payload(
- request: &RadrootsTradeOrderRequested,
+ request: &RadrootsOrderRequest,
root_event_id: &str,
previous_event_id: &str,
agreement_event_id: &str,
payment_event_id: &str,
- decision: RadrootsTradeSettlementDecision,
- ) -> RadrootsTradeSettlementDecisionEvent {
- let reason = (decision == RadrootsTradeSettlementDecision::Rejected)
+ decision: RadrootsOrderSettlementOutcome,
+ ) -> RadrootsOrderSettlementDecision {
+ let reason = (decision == RadrootsOrderSettlementOutcome::Rejected)
.then(|| "reference mismatch".to_owned());
- RadrootsTradeSettlementDecisionEvent {
+ RadrootsOrderSettlementDecision {
order_id: request.order_id.clone(),
listing_addr: request.listing_addr.clone(),
buyer_pubkey: request.buyer_pubkey.clone(),
@@ -4884,7 +4866,7 @@ mod tests {
payment_event_id: payment_event_id.to_owned(),
quote_id: request.economics.quote_id.clone(),
quote_version: request.economics.quote_version,
- economics_digest: radroots_trade_order_economics_digest(&request.economics)
+ economics_digest: radroots_order_economics_digest(&request.economics)
.expect("order economics digest should encode"),
amount: request.economics.total.amount,
currency: request.economics.total.currency,
@@ -5069,9 +5051,8 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let parts =
- active_trade_order_request_event_build(&listing_event_ptr("listing-event-1"), &payload)
- .expect("build order request event");
+ let parts = order_request_event_build(&listing_event_ptr("listing-event-1"), &payload)
+ .expect("build order request event");
let event = event_from_parts("order-request-event-1", buyer_pubkey, parts);
events
.append_record(&signed_order_event_record(
@@ -5150,11 +5131,8 @@ mod tests {
let build_event = |event_id: &str, order_id_raw: &str| {
let payload =
order_request_payload(order_id_raw, listing_addr, buyer_pubkey, seller_pubkey);
- let parts = active_trade_order_request_event_build(
- &listing_event_ptr("listing-event-1"),
- &payload,
- )
- .expect("build order request event");
+ let parts = order_request_event_build(&listing_event_ptr("listing-event-1"), &payload)
+ .expect("build order request event");
event_from_parts(event_id, buyer_pubkey, parts)
};
let acknowledged_event = build_event("order-request-evidence-ack", "usable-ack");
@@ -5321,7 +5299,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let request_parts = active_trade_order_request_event_build(
+ let request_parts = order_request_event_build(
&listing_event_ptr("buyer-order-listing-event"),
&request_payload,
)
@@ -5359,7 +5337,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let decision_parts = active_trade_order_decision_event_build(
+ let decision_parts = order_decision_event_build(
request_event.id.as_str(),
request_event.id.as_str(),
&decision_payload,
@@ -5413,7 +5391,7 @@ mod tests {
decision_event.id.as_str(),
decision_event.id.as_str(),
);
- let payment_parts = active_trade_payment_recorded_event_build(
+ let payment_parts = order_payment_record_event_build(
request_event.id.as_str(),
decision_event.id.as_str(),
&payment_payload,
@@ -5487,9 +5465,9 @@ mod tests {
payment_event.id.as_str(),
decision_event.id.as_str(),
payment_event.id.as_str(),
- RadrootsTradeSettlementDecision::Accepted,
+ RadrootsOrderSettlementOutcome::Accepted,
);
- let settlement_parts = active_trade_settlement_decision_event_build(
+ let settlement_parts = order_settlement_decision_event_build(
request_event.id.as_str(),
payment_event.id.as_str(),
&settlement_payload,
@@ -5584,7 +5562,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let request_parts = active_trade_order_request_event_build(
+ let request_parts = order_request_event_build(
&listing_event_ptr("buyer-order-decline-listing-event"),
&request_payload,
)
@@ -5624,7 +5602,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let decision_parts = active_trade_order_decision_event_build(
+ let decision_parts = order_decision_event_build(
request_event.id.as_str(),
request_event.id.as_str(),
&decision_payload,
@@ -5714,7 +5692,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let request_parts = active_trade_order_request_event_build(
+ let request_parts = order_request_event_build(
&listing_event_ptr("active-lifecycle-listing-event"),
&request_payload,
)
@@ -5746,7 +5724,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let decision_parts = active_trade_order_decision_event_build(
+ let decision_parts = order_decision_event_build(
request_event.id.as_str(),
request_event.id.as_str(),
&decision_payload,
@@ -5793,9 +5771,9 @@ mod tests {
listing_addr.as_str(),
buyer_pubkey,
seller_pubkey,
- RadrootsActiveTradeFulfillmentState::ReadyForPickup,
+ RadrootsOrderFulfillmentState::ReadyForPickup,
);
- let fulfillment_parts = active_trade_fulfillment_update_event_build(
+ let fulfillment_parts = order_fulfillment_update_event_build(
request_event.id.as_str(),
decision_event.id.as_str(),
&fulfillment_payload,
@@ -5856,7 +5834,7 @@ mod tests {
seller_pubkey,
true,
);
- let receipt_parts = active_trade_buyer_receipt_event_build(
+ let receipt_parts = order_receipt_event_build(
request_event.id.as_str(),
fulfillment_event.id.as_str(),
&receipt_payload,
@@ -5926,7 +5904,7 @@ mod tests {
fixture.seller_pubkey.as_str(),
false,
);
- let receipt_parts = active_trade_buyer_receipt_event_build(
+ let receipt_parts = order_receipt_event_build(
fixture.request_event_id.as_str(),
fixture.fulfillment_event_id.as_str(),
&receipt_payload,
@@ -6215,7 +6193,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let request_parts = active_trade_order_request_event_build(
+ let request_parts = order_request_event_build(
&listing_event_ptr(listing_event_id.as_str()),
&request_payload,
)
@@ -6308,7 +6286,7 @@ mod tests {
RadrootsValidationReceiptResult::Valid,
1_777_665_605,
);
- buyer_kind_candidate.kind = KIND_TRADE_RECEIPT;
+ buyer_kind_candidate.kind = KIND_ORDER_RECEIPT;
for (record_id, event) in [
(
@@ -6401,7 +6379,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let request_parts = active_trade_order_request_event_build(
+ let request_parts = order_request_event_build(
&listing_event_ptr("active-revision-listing-event"),
&request_payload,
)
@@ -6427,7 +6405,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let decision_parts = active_trade_order_decision_event_build(
+ let decision_parts = order_decision_event_build(
request_event.id.as_str(),
request_event.id.as_str(),
&decision_payload,
@@ -6460,7 +6438,7 @@ mod tests {
request_event.id.as_str(),
decision_event.id.as_str(),
);
- let proposal_parts = active_trade_order_revision_proposal_event_build(
+ let proposal_parts = order_revision_proposal_event_build(
request_event.id.as_str(),
decision_event.id.as_str(),
&proposal_payload,
@@ -6519,9 +6497,9 @@ mod tests {
seller_pubkey,
request_event.id.as_str(),
proposal_event.id.as_str(),
- RadrootsTradeOrderRevisionDecision::Accepted,
+ RadrootsOrderRevisionOutcome::Accepted,
);
- let revision_decision_parts = active_trade_order_revision_decision_event_build(
+ let revision_decision_parts = order_revision_decision_event_build(
request_event.id.as_str(),
proposal_event.id.as_str(),
&revision_decision_payload,
@@ -6580,7 +6558,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let cancel_parts = active_trade_order_cancel_event_build(
+ let cancel_parts = order_cancellation_event_build(
request_event.id.as_str(),
revision_decision_event.id.as_str(),
&cancel_payload,
@@ -6659,7 +6637,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let request_parts = active_trade_order_request_event_build(
+ let request_parts = order_request_event_build(
&listing_event_ptr("active-conflict-listing-event"),
&request_payload,
)
@@ -6681,7 +6659,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let accepted_parts = active_trade_order_decision_event_build(
+ let accepted_parts = order_decision_event_build(
request_event.id.as_str(),
request_event.id.as_str(),
&accepted_payload,
@@ -6698,7 +6676,7 @@ mod tests {
buyer_pubkey,
seller_pubkey,
);
- let declined_parts = active_trade_order_decision_event_build(
+ let declined_parts = order_decision_event_build(
request_event.id.as_str(),
request_event.id.as_str(),
&declined_payload,
@@ -8540,9 +8518,8 @@ mod tests {
"buyer-pubkey",
"seller-pubkey",
);
- let parts =
- active_trade_order_request_event_build(&listing_event_ptr("listing-event"), &payload)
- .expect("build order request event");
+ let parts = order_request_event_build(&listing_event_ptr("listing-event"), &payload)
+ .expect("build order request event");
let event = event_from_parts("app-order-request-event", "buyer-pubkey", parts);
let mut relay_record = signed_order_event_record(
"app:relay_event:order-request:duplicate",
@@ -8611,11 +8588,9 @@ mod tests {
"buyer-pubkey",
"seller-pubkey",
);
- let request_parts = active_trade_order_request_event_build(
- &listing_event_ptr("listing-event"),
- &request_payload,
- )
- .expect("build order request event");
+ let request_parts =
+ order_request_event_build(&listing_event_ptr("listing-event"), &request_payload)
+ .expect("build order request event");
let request_event =
event_from_parts("app-decision-request-event", "buyer-pubkey", request_parts);
let decision_payload = accepted_order_decision_payload(
@@ -8624,7 +8599,7 @@ mod tests {
"buyer-pubkey",
"seller-pubkey",
);
- let decision_parts = active_trade_order_decision_event_build(
+ let decision_parts = order_decision_event_build(
request_event.id.as_str(),
request_event.id.as_str(),
&decision_payload,
diff --git a/crates/sync/src/publish.rs b/crates/sync/src/publish.rs
@@ -2,9 +2,9 @@ use radroots_app_view::{
FarmId, FarmReadiness, FulfillmentWindowId, OrderId, ProductId, ProductStatus,
};
use radroots_sdk::SdkTransportMode;
-use radroots_sdk::trade::{
- RadrootsActiveTradeFulfillmentState, RadrootsTradeOrderEconomics, RadrootsTradeOrderItem,
- RadrootsTradeOrderRevisionDecision,
+use radroots_sdk::order::{
+ RadrootsOrderEconomics, RadrootsOrderFulfillmentState, RadrootsOrderItem,
+ RadrootsOrderRevisionOutcome,
};
use serde::{Deserialize, Serialize};
use thiserror::Error;
@@ -194,8 +194,8 @@ pub struct AppOrderRevisionProposalPublishPayload {
pub listing_addr: String,
pub buyer_pubkey: String,
pub seller_pubkey: String,
- pub items: Vec<RadrootsTradeOrderItem>,
- pub economics: RadrootsTradeOrderEconomics,
+ pub items: Vec<RadrootsOrderItem>,
+ pub economics: RadrootsOrderEconomics,
pub reason: String,
}
@@ -211,7 +211,7 @@ pub struct AppOrderRevisionDecisionPublishPayload {
pub listing_addr: String,
pub buyer_pubkey: String,
pub seller_pubkey: String,
- pub decision: RadrootsTradeOrderRevisionDecision,
+ pub decision: RadrootsOrderRevisionOutcome,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
@@ -225,7 +225,7 @@ pub struct AppOrderFulfillmentPublishPayload {
pub listing_addr: String,
pub buyer_pubkey: String,
pub seller_pubkey: String,
- pub status: RadrootsActiveTradeFulfillmentState,
+ pub status: RadrootsOrderFulfillmentState,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
@@ -795,9 +795,9 @@ mod tests {
PendingSyncOperation, PendingSyncOperationState, SyncAggregateRef, SyncOperationKind,
};
use radroots_app_view::{FarmId, FarmReadiness, OrderId, ProductId, ProductStatus};
- use radroots_sdk::trade::{
- RadrootsActiveTradeFulfillmentState, RadrootsTradeOrderEconomics, RadrootsTradeOrderItem,
- RadrootsTradeOrderRevisionDecision,
+ use radroots_sdk::order::{
+ RadrootsOrderEconomics, RadrootsOrderFulfillmentState, RadrootsOrderItem,
+ RadrootsOrderRevisionOutcome,
};
use serde_json::json;
@@ -1039,7 +1039,7 @@ mod tests {
listing_addr: "30402:seller:listing".to_owned(),
buyer_pubkey: "buyer".to_owned(),
seller_pubkey: "seller".to_owned(),
- status: RadrootsActiveTradeFulfillmentState::ReadyForPickup,
+ status: RadrootsOrderFulfillmentState::ReadyForPickup,
});
let receipt = AppPublishPayload::OrderReceipt(AppOrderReceiptPublishPayload {
context: AppPublishContext::new("acct_local", "buyer_order_receipt"),
@@ -1108,7 +1108,7 @@ mod tests {
listing_addr: "30402:seller:listing".to_owned(),
buyer_pubkey: "buyer".to_owned(),
seller_pubkey: "seller".to_owned(),
- status: RadrootsActiveTradeFulfillmentState::AcceptedNotFulfilled,
+ status: RadrootsOrderFulfillmentState::AcceptedNotFulfilled,
})
.validation_failures()
.into_iter()
@@ -1130,7 +1130,7 @@ mod tests {
listing_addr: "30402:seller:listing".to_owned(),
buyer_pubkey: "buyer".to_owned(),
seller_pubkey: "seller".to_owned(),
- status: RadrootsActiveTradeFulfillmentState::Delivered,
+ status: RadrootsOrderFulfillmentState::Delivered,
}),
"2026-04-20T18:00:00Z",
)
@@ -1151,7 +1151,7 @@ mod tests {
listing_addr: "30402:seller:listing".to_owned(),
buyer_pubkey: "buyer".to_owned(),
seller_pubkey: "seller".to_owned(),
- status: RadrootsActiveTradeFulfillmentState::Delivered,
+ status: RadrootsOrderFulfillmentState::Delivered,
})
);
}
@@ -1173,7 +1173,7 @@ mod tests {
listing_addr: "30402:seller:listing".to_owned(),
buyer_pubkey: "buyer".to_owned(),
seller_pubkey: "seller".to_owned(),
- items: vec![RadrootsTradeOrderItem {
+ items: vec![RadrootsOrderItem {
bin_id: "bin-1".to_owned(),
bin_count: 2,
}],
@@ -1208,7 +1208,7 @@ mod tests {
listing_addr: String::new(),
buyer_pubkey: String::new(),
seller_pubkey: String::new(),
- decision: RadrootsTradeOrderRevisionDecision::Declined {
+ decision: RadrootsOrderRevisionOutcome::Declined {
reason: " ".to_owned(),
},
});
@@ -1285,7 +1285,7 @@ mod tests {
assert!(pending_operation.publish_payload().is_err());
}
- fn revision_economics() -> RadrootsTradeOrderEconomics {
+ fn revision_economics() -> RadrootsOrderEconomics {
serde_json::from_value(json!({
"quote_id": "quote-revision-1",
"quote_version": 2,
diff --git a/crates/view/src/lib.rs b/crates/view/src/lib.rs
@@ -3,10 +3,10 @@
pub use radroots_app_types::*;
use radroots_core::RadrootsCoreMoney;
-use radroots_events::trade::{RadrootsActiveTradeFulfillmentState, RadrootsTradeOrderEconomics};
+use radroots_events::order::{RadrootsOrderEconomics, RadrootsOrderFulfillmentState};
use radroots_trade::order::{
- RadrootsActiveOrderPaymentProjection, RadrootsActiveOrderPaymentState,
- RadrootsActiveOrderProjection, RadrootsActiveOrderSettlementState, RadrootsActiveOrderStatus,
+ RadrootsOrderPaymentProjection, RadrootsOrderPaymentState, RadrootsOrderProjection,
+ RadrootsOrderSettlementState, RadrootsOrderStatus,
};
use radroots_trade::validation_receipt::{
RadrootsValidationReceiptProofSystem, RadrootsValidationReceiptResult,
@@ -1106,23 +1106,21 @@ impl TradeAgreementStatus {
}
}
- pub const fn from_active_order_status(status: &RadrootsActiveOrderStatus) -> Self {
+ pub const fn from_active_order_status(status: &RadrootsOrderStatus) -> Self {
match status {
- RadrootsActiveOrderStatus::Missing => Self::NeedsReview,
- RadrootsActiveOrderStatus::Requested => Self::Ordered,
- RadrootsActiveOrderStatus::Accepted => Self::Confirmed,
- RadrootsActiveOrderStatus::Declined => Self::Declined,
- RadrootsActiveOrderStatus::Cancelled => Self::Cancelled,
- RadrootsActiveOrderStatus::Completed => Self::Completed,
- RadrootsActiveOrderStatus::Disputed | RadrootsActiveOrderStatus::Invalid => {
- Self::NeedsReview
- }
+ RadrootsOrderStatus::Missing => Self::NeedsReview,
+ RadrootsOrderStatus::Requested => Self::Ordered,
+ RadrootsOrderStatus::Accepted => Self::Confirmed,
+ RadrootsOrderStatus::Declined => Self::Declined,
+ RadrootsOrderStatus::Cancelled => Self::Cancelled,
+ RadrootsOrderStatus::Completed => Self::Completed,
+ RadrootsOrderStatus::Disputed | RadrootsOrderStatus::Invalid => Self::NeedsReview,
}
}
}
-impl From<&RadrootsActiveOrderStatus> for TradeAgreementStatus {
- fn from(status: &RadrootsActiveOrderStatus) -> Self {
+impl From<&RadrootsOrderStatus> for TradeAgreementStatus {
+ fn from(status: &RadrootsOrderStatus) -> Self {
Self::from_active_order_status(status)
}
}
@@ -1223,22 +1221,20 @@ impl TradeFulfillmentStatus {
}
}
- pub const fn from_active_fulfillment_status(
- status: &RadrootsActiveTradeFulfillmentState,
- ) -> Self {
+ pub const fn from_active_fulfillment_status(status: &RadrootsOrderFulfillmentState) -> Self {
match status {
- RadrootsActiveTradeFulfillmentState::AcceptedNotFulfilled => Self::Confirmed,
- RadrootsActiveTradeFulfillmentState::Preparing => Self::Preparing,
- RadrootsActiveTradeFulfillmentState::ReadyForPickup => Self::ReadyForPickup,
- RadrootsActiveTradeFulfillmentState::OutForDelivery => Self::OutForDelivery,
- RadrootsActiveTradeFulfillmentState::Delivered => Self::Delivered,
- RadrootsActiveTradeFulfillmentState::SellerCancelled => Self::Cancelled,
+ RadrootsOrderFulfillmentState::AcceptedNotFulfilled => Self::Confirmed,
+ RadrootsOrderFulfillmentState::Preparing => Self::Preparing,
+ RadrootsOrderFulfillmentState::ReadyForPickup => Self::ReadyForPickup,
+ RadrootsOrderFulfillmentState::OutForDelivery => Self::OutForDelivery,
+ RadrootsOrderFulfillmentState::Delivered => Self::Delivered,
+ RadrootsOrderFulfillmentState::SellerCancelled => Self::Cancelled,
}
}
}
-impl From<&RadrootsActiveTradeFulfillmentState> for TradeFulfillmentStatus {
- fn from(status: &RadrootsActiveTradeFulfillmentState) -> Self {
+impl From<&RadrootsOrderFulfillmentState> for TradeFulfillmentStatus {
+ fn from(status: &RadrootsOrderFulfillmentState) -> Self {
Self::from_active_fulfillment_status(status)
}
}
@@ -1272,22 +1268,20 @@ impl TradeInventoryStatus {
}
}
- pub fn from_active_order_projection(projection: &RadrootsActiveOrderProjection) -> Self {
+ pub fn from_active_order_projection(projection: &RadrootsOrderProjection) -> Self {
match (&projection.status, projection.fulfillment_status.as_ref()) {
- (RadrootsActiveOrderStatus::Requested, _) => Self::NeedsReview,
+ (RadrootsOrderStatus::Requested, _) => Self::NeedsReview,
(
- RadrootsActiveOrderStatus::Accepted,
- Some(RadrootsActiveTradeFulfillmentState::SellerCancelled),
+ RadrootsOrderStatus::Accepted,
+ Some(RadrootsOrderFulfillmentState::SellerCancelled),
) => Self::Available,
- (RadrootsActiveOrderStatus::Accepted, _) => Self::Reserved,
- (RadrootsActiveOrderStatus::Declined | RadrootsActiveOrderStatus::Cancelled, _) => {
- Self::Available
- }
- (RadrootsActiveOrderStatus::Completed, _) => Self::Reserved,
+ (RadrootsOrderStatus::Accepted, _) => Self::Reserved,
+ (RadrootsOrderStatus::Declined | RadrootsOrderStatus::Cancelled, _) => Self::Available,
+ (RadrootsOrderStatus::Completed, _) => Self::Reserved,
(
- RadrootsActiveOrderStatus::Missing
- | RadrootsActiveOrderStatus::Disputed
- | RadrootsActiveOrderStatus::Invalid,
+ RadrootsOrderStatus::Missing
+ | RadrootsOrderStatus::Disputed
+ | RadrootsOrderStatus::Invalid,
_,
) => Self::NeedsReview,
}
@@ -1330,46 +1324,40 @@ impl TradePaymentDisplayStatus {
false
}
- pub fn from_active_payment_state(status: &RadrootsActiveOrderPaymentState) -> Self {
+ pub fn from_active_payment_state(status: &RadrootsOrderPaymentState) -> Self {
match status {
- RadrootsActiveOrderPaymentState::NotRecorded => Self::NotRecorded,
- RadrootsActiveOrderPaymentState::Recorded => Self::Recorded,
- RadrootsActiveOrderPaymentState::Settled => Self::Settled,
- RadrootsActiveOrderPaymentState::Rejected
- | RadrootsActiveOrderPaymentState::Invalid => Self::NeedsReview,
+ RadrootsOrderPaymentState::NotRecorded => Self::NotRecorded,
+ RadrootsOrderPaymentState::Recorded => Self::Recorded,
+ RadrootsOrderPaymentState::Settled => Self::Settled,
+ RadrootsOrderPaymentState::Rejected | RadrootsOrderPaymentState::Invalid => {
+ Self::NeedsReview
+ }
}
}
- pub fn from_active_payment_projection(payment: &RadrootsActiveOrderPaymentProjection) -> Self {
+ pub fn from_active_payment_projection(payment: &RadrootsOrderPaymentProjection) -> Self {
match (&payment.state, &payment.settlement_state) {
+ (RadrootsOrderPaymentState::NotRecorded, RadrootsOrderSettlementState::NotRequired) => {
+ Self::NotRecorded
+ }
+ (RadrootsOrderPaymentState::NotRecorded, _) => Self::NeedsReview,
+ (RadrootsOrderPaymentState::Recorded, RadrootsOrderSettlementState::Pending) => {
+ Self::Pending
+ }
+ (RadrootsOrderPaymentState::Recorded, RadrootsOrderSettlementState::NotRequired) => {
+ Self::Recorded
+ }
+ (RadrootsOrderPaymentState::Recorded, RadrootsOrderSettlementState::Accepted) => {
+ Self::Settled
+ }
(
- RadrootsActiveOrderPaymentState::NotRecorded,
- RadrootsActiveOrderSettlementState::NotRequired,
- ) => Self::NotRecorded,
- (RadrootsActiveOrderPaymentState::NotRecorded, _) => Self::NeedsReview,
- (
- RadrootsActiveOrderPaymentState::Recorded,
- RadrootsActiveOrderSettlementState::Pending,
- ) => Self::Pending,
- (
- RadrootsActiveOrderPaymentState::Recorded,
- RadrootsActiveOrderSettlementState::NotRequired,
- ) => Self::Recorded,
- (
- RadrootsActiveOrderPaymentState::Recorded,
- RadrootsActiveOrderSettlementState::Accepted,
- ) => Self::Settled,
- (
- RadrootsActiveOrderPaymentState::Recorded,
- RadrootsActiveOrderSettlementState::Rejected
- | RadrootsActiveOrderSettlementState::Invalid,
- ) => Self::NeedsReview,
- (RadrootsActiveOrderPaymentState::Settled, _) => Self::Settled,
- (
- RadrootsActiveOrderPaymentState::Rejected
- | RadrootsActiveOrderPaymentState::Invalid,
- _,
+ RadrootsOrderPaymentState::Recorded,
+ RadrootsOrderSettlementState::Rejected | RadrootsOrderSettlementState::Invalid,
) => Self::NeedsReview,
+ (RadrootsOrderPaymentState::Settled, _) => Self::Settled,
+ (RadrootsOrderPaymentState::Rejected | RadrootsOrderPaymentState::Invalid, _) => {
+ Self::NeedsReview
+ }
}
}
}
@@ -1417,7 +1405,7 @@ pub struct TradeEconomicsProjection {
}
impl TradeEconomicsProjection {
- pub fn from_trade_order_economics(economics: &RadrootsTradeOrderEconomics) -> Self {
+ pub fn from_trade_order_economics(economics: &RadrootsOrderEconomics) -> Self {
Self {
subtotal_minor_units: money_minor_units(&economics.subtotal),
discount_total_minor_units: money_minor_units(&economics.discount_total),
@@ -1428,8 +1416,8 @@ impl TradeEconomicsProjection {
}
}
-impl From<&RadrootsTradeOrderEconomics> for TradeEconomicsProjection {
- fn from(economics: &RadrootsTradeOrderEconomics) -> Self {
+impl From<&RadrootsOrderEconomics> for TradeEconomicsProjection {
+ fn from(economics: &RadrootsOrderEconomics) -> Self {
Self::from_trade_order_economics(economics)
}
}
@@ -1484,9 +1472,7 @@ pub struct TradeReceiptProjection {
}
impl TradeReceiptProjection {
- pub fn from_active_order_projection(
- projection: &RadrootsActiveOrderProjection,
- ) -> Option<Self> {
+ pub fn from_active_order_projection(projection: &RadrootsOrderProjection) -> Option<Self> {
Some(Self {
event_id: projection.receipt_event_id.clone()?,
received: projection.receipt_received?,
@@ -1654,7 +1640,7 @@ impl TradeWorkflowProjection {
pub fn from_active_order_projection(
order_id: OrderId,
- projection: &RadrootsActiveOrderProjection,
+ projection: &RadrootsOrderProjection,
revision: TradeRevisionStatus,
provenance: TradeProvenanceProjection,
) -> Self {
@@ -1781,37 +1767,36 @@ impl TradeWorkflowProjection {
}
pub fn order_status_from_active_order_projection(
- projection: &RadrootsActiveOrderProjection,
+ projection: &RadrootsOrderProjection,
) -> Option<OrderStatus> {
match (&projection.status, projection.fulfillment_status.as_ref()) {
- (RadrootsActiveOrderStatus::Missing, _) => None,
- (RadrootsActiveOrderStatus::Requested, _) => Some(OrderStatus::NeedsAction),
+ (RadrootsOrderStatus::Missing, _) => None,
+ (RadrootsOrderStatus::Requested, _) => Some(OrderStatus::NeedsAction),
(
- RadrootsActiveOrderStatus::Accepted,
+ RadrootsOrderStatus::Accepted,
Some(
- RadrootsActiveTradeFulfillmentState::ReadyForPickup
- | RadrootsActiveTradeFulfillmentState::OutForDelivery
- | RadrootsActiveTradeFulfillmentState::Delivered,
+ RadrootsOrderFulfillmentState::ReadyForPickup
+ | RadrootsOrderFulfillmentState::OutForDelivery
+ | RadrootsOrderFulfillmentState::Delivered,
),
) => Some(OrderStatus::Packed),
+ (RadrootsOrderStatus::Accepted, Some(RadrootsOrderFulfillmentState::SellerCancelled)) => {
+ Some(OrderStatus::Declined)
+ }
(
- RadrootsActiveOrderStatus::Accepted,
- Some(RadrootsActiveTradeFulfillmentState::SellerCancelled),
- ) => Some(OrderStatus::Declined),
- (
- RadrootsActiveOrderStatus::Accepted,
+ RadrootsOrderStatus::Accepted,
Some(
- RadrootsActiveTradeFulfillmentState::Preparing
- | RadrootsActiveTradeFulfillmentState::AcceptedNotFulfilled,
+ RadrootsOrderFulfillmentState::Preparing
+ | RadrootsOrderFulfillmentState::AcceptedNotFulfilled,
)
| None,
) => Some(OrderStatus::Scheduled),
- (RadrootsActiveOrderStatus::Declined | RadrootsActiveOrderStatus::Cancelled, _) => {
+ (RadrootsOrderStatus::Declined | RadrootsOrderStatus::Cancelled, _) => {
Some(OrderStatus::Declined)
}
- (RadrootsActiveOrderStatus::Completed, _) => Some(OrderStatus::Completed),
- (RadrootsActiveOrderStatus::Disputed, _) => Some(OrderStatus::NeedsReview),
- (RadrootsActiveOrderStatus::Invalid, _) => Some(OrderStatus::NeedsAction),
+ (RadrootsOrderStatus::Completed, _) => Some(OrderStatus::Completed),
+ (RadrootsOrderStatus::Disputed, _) => Some(OrderStatus::NeedsReview),
+ (RadrootsOrderStatus::Invalid, _) => Some(OrderStatus::NeedsAction),
}
}
@@ -1875,13 +1860,13 @@ impl OrderFulfillmentAction {
}
}
- pub const fn fulfillment_status(self) -> RadrootsActiveTradeFulfillmentState {
+ pub const fn fulfillment_status(self) -> RadrootsOrderFulfillmentState {
match self {
- Self::Preparing => RadrootsActiveTradeFulfillmentState::Preparing,
- Self::ReadyForPickup => RadrootsActiveTradeFulfillmentState::ReadyForPickup,
- Self::OutForDelivery => RadrootsActiveTradeFulfillmentState::OutForDelivery,
- Self::Delivered => RadrootsActiveTradeFulfillmentState::Delivered,
- Self::SellerCancelled => RadrootsActiveTradeFulfillmentState::SellerCancelled,
+ Self::Preparing => RadrootsOrderFulfillmentState::Preparing,
+ Self::ReadyForPickup => RadrootsOrderFulfillmentState::ReadyForPickup,
+ Self::OutForDelivery => RadrootsOrderFulfillmentState::OutForDelivery,
+ Self::Delivered => RadrootsOrderFulfillmentState::Delivered,
+ Self::SellerCancelled => RadrootsOrderFulfillmentState::SellerCancelled,
}
}
}
@@ -2450,14 +2435,13 @@ mod tests {
use radroots_core::{
RadrootsCoreCurrency, RadrootsCoreDecimal, RadrootsCoreMoney, RadrootsCoreUnit,
};
- use radroots_events::trade::{
- RadrootsActiveTradeFulfillmentState, RadrootsTradeOrderEconomicItem,
- RadrootsTradeOrderEconomics, RadrootsTradePricingBasis,
+ use radroots_events::order::{
+ RadrootsOrderEconomicItem, RadrootsOrderEconomics, RadrootsOrderFulfillmentState,
+ RadrootsOrderPricingBasis,
};
use radroots_trade::order::{
- RadrootsActiveOrderPaymentProjection, RadrootsActiveOrderPaymentState,
- RadrootsActiveOrderProjection, RadrootsActiveOrderSettlementState,
- RadrootsActiveOrderStatus,
+ RadrootsOrderPaymentProjection, RadrootsOrderPaymentState, RadrootsOrderProjection,
+ RadrootsOrderSettlementState, RadrootsOrderStatus,
};
use radroots_trade::validation_receipt::{
RadrootsValidationReceiptProofSystem, RadrootsValidationReceiptResult,
@@ -3135,7 +3119,7 @@ mod tests {
);
assert_eq!(
OrderFulfillmentAction::Preparing.fulfillment_status(),
- RadrootsActiveTradeFulfillmentState::Preparing
+ RadrootsOrderFulfillmentState::Preparing
);
assert_eq!(
OrderPrimaryAction::PublishReadyForPickup.storage_key(),
@@ -3159,13 +3143,13 @@ mod tests {
RadrootsCoreMoney::new(test_decimal(raw), RadrootsCoreCurrency::USD)
}
- fn test_trade_economics() -> RadrootsTradeOrderEconomics {
- RadrootsTradeOrderEconomics {
+ fn test_trade_economics() -> RadrootsOrderEconomics {
+ RadrootsOrderEconomics {
quote_id: "quote-active-order".to_owned(),
quote_version: 2,
- pricing_basis: RadrootsTradePricingBasis::ListingEvent,
+ pricing_basis: RadrootsOrderPricingBasis::ListingEvent,
currency: RadrootsCoreCurrency::USD,
- items: vec![RadrootsTradeOrderEconomicItem {
+ items: vec![RadrootsOrderEconomicItem {
bin_id: "bin-1".to_owned(),
bin_count: 2,
quantity_amount: test_decimal("1"),
@@ -3183,30 +3167,25 @@ mod tests {
}
}
- fn test_payment_projection(
- state: RadrootsActiveOrderPaymentState,
- ) -> RadrootsActiveOrderPaymentProjection {
- let mut projection = RadrootsActiveOrderPaymentProjection::not_recorded();
- projection.payment_event_id =
- (!matches!(&state, RadrootsActiveOrderPaymentState::NotRecorded))
- .then(|| "payment-event-1".to_owned());
+ fn test_payment_projection(state: RadrootsOrderPaymentState) -> RadrootsOrderPaymentProjection {
+ let mut projection = RadrootsOrderPaymentProjection::not_recorded();
+ projection.payment_event_id = (!matches!(&state, RadrootsOrderPaymentState::NotRecorded))
+ .then(|| "payment-event-1".to_owned());
projection.settlement_state = match &state {
- RadrootsActiveOrderPaymentState::Settled => {
- RadrootsActiveOrderSettlementState::Accepted
- }
- RadrootsActiveOrderPaymentState::Invalid => RadrootsActiveOrderSettlementState::Invalid,
- _ => RadrootsActiveOrderSettlementState::NotRequired,
+ RadrootsOrderPaymentState::Settled => RadrootsOrderSettlementState::Accepted,
+ RadrootsOrderPaymentState::Invalid => RadrootsOrderSettlementState::Invalid,
+ _ => RadrootsOrderSettlementState::NotRequired,
};
projection.state = state;
projection
}
fn test_active_order_projection(
- status: RadrootsActiveOrderStatus,
- fulfillment_status: Option<RadrootsActiveTradeFulfillmentState>,
- payment_state: RadrootsActiveOrderPaymentState,
- ) -> RadrootsActiveOrderProjection {
- RadrootsActiveOrderProjection {
+ status: RadrootsOrderStatus,
+ fulfillment_status: Option<RadrootsOrderFulfillmentState>,
+ payment_state: RadrootsOrderPaymentState,
+ ) -> RadrootsOrderProjection {
+ RadrootsOrderProjection {
order_id: "active-order-1".to_owned(),
status,
request_event_id: Some("request-event-1".to_owned()),
@@ -3235,42 +3214,42 @@ mod tests {
#[test]
fn trade_workflow_projection_maps_shared_active_order_projection_to_product_axes() {
assert_eq!(
- TradeAgreementStatus::from_active_order_status(&RadrootsActiveOrderStatus::Requested),
+ TradeAgreementStatus::from_active_order_status(&RadrootsOrderStatus::Requested),
TradeAgreementStatus::Ordered
);
assert_eq!(
- TradeAgreementStatus::from_active_order_status(&RadrootsActiveOrderStatus::Accepted),
+ TradeAgreementStatus::from_active_order_status(&RadrootsOrderStatus::Accepted),
TradeAgreementStatus::Confirmed
);
assert_eq!(
- TradeAgreementStatus::from_active_order_status(&RadrootsActiveOrderStatus::Disputed),
+ TradeAgreementStatus::from_active_order_status(&RadrootsOrderStatus::Disputed),
TradeAgreementStatus::NeedsReview
);
assert_eq!(
- TradeAgreementStatus::from_active_order_status(&RadrootsActiveOrderStatus::Invalid),
+ TradeAgreementStatus::from_active_order_status(&RadrootsOrderStatus::Invalid),
TradeAgreementStatus::NeedsReview
);
assert_eq!(
TradeFulfillmentStatus::from_active_fulfillment_status(
- &RadrootsActiveTradeFulfillmentState::AcceptedNotFulfilled
+ &RadrootsOrderFulfillmentState::AcceptedNotFulfilled
),
TradeFulfillmentStatus::Confirmed
);
assert_eq!(
TradeFulfillmentStatus::from_active_fulfillment_status(
- &RadrootsActiveTradeFulfillmentState::SellerCancelled
+ &RadrootsOrderFulfillmentState::SellerCancelled
),
TradeFulfillmentStatus::Cancelled
);
assert_eq!(
TradePaymentDisplayStatus::from_active_payment_state(
- &RadrootsActiveOrderPaymentState::Settled
+ &RadrootsOrderPaymentState::Settled
),
TradePaymentDisplayStatus::Settled
);
assert_eq!(
TradePaymentDisplayStatus::from_active_payment_state(
- &RadrootsActiveOrderPaymentState::Rejected
+ &RadrootsOrderPaymentState::Rejected
),
TradePaymentDisplayStatus::NeedsReview
);
@@ -3303,9 +3282,9 @@ mod tests {
let order_id = OrderId::new();
let active_order = test_active_order_projection(
- RadrootsActiveOrderStatus::Accepted,
- Some(RadrootsActiveTradeFulfillmentState::ReadyForPickup),
- RadrootsActiveOrderPaymentState::Recorded,
+ RadrootsOrderStatus::Accepted,
+ Some(RadrootsOrderFulfillmentState::ReadyForPickup),
+ RadrootsOrderPaymentState::Recorded,
);
let projection = TradeWorkflowProjection::from_active_order_projection(
order_id,
@@ -3336,9 +3315,9 @@ mod tests {
);
let requested_order = test_active_order_projection(
- RadrootsActiveOrderStatus::Requested,
+ RadrootsOrderStatus::Requested,
None,
- RadrootsActiveOrderPaymentState::NotRecorded,
+ RadrootsOrderPaymentState::NotRecorded,
);
let requested_projection = TradeWorkflowProjection::from_active_order_projection(
order_id,
@@ -3361,9 +3340,9 @@ mod tests {
);
let invalid_payment_order = test_active_order_projection(
- RadrootsActiveOrderStatus::Accepted,
+ RadrootsOrderStatus::Accepted,
None,
- RadrootsActiveOrderPaymentState::Invalid,
+ RadrootsOrderPaymentState::Invalid,
);
let invalid_payment_projection = TradeWorkflowProjection::from_active_order_projection(
order_id,
@@ -3377,12 +3356,11 @@ mod tests {
);
let mut pending_payment_order = test_active_order_projection(
- RadrootsActiveOrderStatus::Accepted,
+ RadrootsOrderStatus::Accepted,
None,
- RadrootsActiveOrderPaymentState::Recorded,
+ RadrootsOrderPaymentState::Recorded,
);
- pending_payment_order.payment.settlement_state =
- RadrootsActiveOrderSettlementState::Pending;
+ pending_payment_order.payment.settlement_state = RadrootsOrderSettlementState::Pending;
let pending_payment_projection = TradeWorkflowProjection::from_active_order_projection(
order_id,
&pending_payment_order,
@@ -3395,9 +3373,9 @@ mod tests {
);
let settled_payment_order = test_active_order_projection(
- RadrootsActiveOrderStatus::Completed,
+ RadrootsOrderStatus::Completed,
None,
- RadrootsActiveOrderPaymentState::Settled,
+ RadrootsOrderPaymentState::Settled,
);
let settled_payment_projection = TradeWorkflowProjection::from_active_order_projection(
order_id,
@@ -3426,26 +3404,26 @@ mod tests {
#[test]
fn trade_payment_display_projection_maps_reducer_payment_states() {
- let mut pending = RadrootsActiveOrderPaymentProjection::not_recorded();
- pending.state = RadrootsActiveOrderPaymentState::Recorded;
+ let mut pending = RadrootsOrderPaymentProjection::not_recorded();
+ pending.state = RadrootsOrderPaymentState::Recorded;
pending.payment_event_id = Some("payment-event-1".to_owned());
- pending.settlement_state = RadrootsActiveOrderSettlementState::Pending;
+ pending.settlement_state = RadrootsOrderSettlementState::Pending;
assert_eq!(
TradePaymentDisplayStatus::from_active_payment_projection(&pending),
TradePaymentDisplayStatus::Pending
);
- let mut settled = RadrootsActiveOrderPaymentProjection::not_recorded();
- settled.state = RadrootsActiveOrderPaymentState::Settled;
+ let mut settled = RadrootsOrderPaymentProjection::not_recorded();
+ settled.state = RadrootsOrderPaymentState::Settled;
settled.payment_event_id = Some("payment-event-1".to_owned());
- settled.settlement_state = RadrootsActiveOrderSettlementState::Accepted;
+ settled.settlement_state = RadrootsOrderSettlementState::Accepted;
assert_eq!(
TradePaymentDisplayStatus::from_active_payment_projection(&settled),
TradePaymentDisplayStatus::Settled
);
- let mut inconsistent = RadrootsActiveOrderPaymentProjection::not_recorded();
- inconsistent.settlement_state = RadrootsActiveOrderSettlementState::Accepted;
+ let mut inconsistent = RadrootsOrderPaymentProjection::not_recorded();
+ inconsistent.settlement_state = RadrootsOrderSettlementState::Accepted;
assert_eq!(
TradePaymentDisplayStatus::from_active_payment_projection(&inconsistent),
TradePaymentDisplayStatus::NeedsReview
@@ -3508,14 +3486,14 @@ mod tests {
#[test]
fn trade_workflow_projection_uses_localization_key_ids_for_visible_status_labels() {
assert_eq!(
- TradeAgreementStatus::from_active_order_status(&RadrootsActiveOrderStatus::Requested)
+ TradeAgreementStatus::from_active_order_status(&RadrootsOrderStatus::Requested)
.storage_key(),
"ordered"
);
assert_eq!(TradeAgreementStatus::Ordered.storage_key(), "ordered");
assert_eq!(
TradeFulfillmentStatus::from_active_fulfillment_status(
- &RadrootsActiveTradeFulfillmentState::AcceptedNotFulfilled
+ &RadrootsOrderFulfillmentState::AcceptedNotFulfilled
)
.storage_key(),
"confirmed"