lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

commit f6f034cbe60925de7198e5ec1ed65a5e436007f4
parent 9908f5d0f4e2a3456395f9e528c3108d3ffa8d35
Author: triesap <tyson@radroots.org>
Date:   Mon, 27 Apr 2026 22:07:39 +0000

spec: add active trade order operations

Diffstat:
Aspec/conformance/vectors/trade/build_order_decision_draft.v1.json | 36++++++++++++++++++++++++++++++++++++
Aspec/conformance/vectors/trade/build_order_request_draft.v1.json | 35+++++++++++++++++++++++++++++++++++
Aspec/conformance/vectors/trade/parse_order_decision.v1.json | 22++++++++++++++++++++++
Aspec/conformance/vectors/trade/parse_order_request.v1.json | 22++++++++++++++++++++++
Mspec/operations.toml | 96+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mspec/sdk-exports/go.toml | 11+++++++++++
Mspec/sdk-exports/kotlin.toml | 11+++++++++++
Mspec/sdk-exports/py.toml | 11+++++++++++
Mspec/sdk-exports/swift.toml | 11+++++++++++
Mspec/sdk-exports/ts.toml | 11+++++++++++
10 files changed, 266 insertions(+), 0 deletions(-)

diff --git a/spec/conformance/vectors/trade/build_order_decision_draft.v1.json b/spec/conformance/vectors/trade/build_order_decision_draft.v1.json @@ -0,0 +1,36 @@ +{ + "suite": "trade", + "contract_version": "0.1.0", + "vectors": [ + { + "id": "trade_build_order_decision_draft_accept_minimal_001", + "kind": "trade.build_order_decision_draft", + "input": { + "root_event_id": "order-request-event", + "prev_event_id": "order-request-event", + "payload": { + "order_id": "order-1", + "listing_addr": "30402:seller_pubkey:AAAAAAAAAAAAAAAAAAAAAg", + "buyer_pubkey": "buyer_pubkey", + "seller_pubkey": "seller_pubkey", + "decision": { + "decision": "accepted", + "inventory_commitments": [ + { + "bin_id": "bin-1", + "bin_count": 2 + } + ] + } + } + }, + "expected": { + "wire_parts": { + "kind": 3423, + "content_type": "TradeOrderDecision", + "tags_shape": "active_trade_order_decision_tags" + } + } + } + ] +} diff --git a/spec/conformance/vectors/trade/build_order_request_draft.v1.json b/spec/conformance/vectors/trade/build_order_request_draft.v1.json @@ -0,0 +1,35 @@ +{ + "suite": "trade", + "contract_version": "0.1.0", + "vectors": [ + { + "id": "trade_build_order_request_draft_minimal_001", + "kind": "trade.build_order_request_draft", + "input": { + "listing_event": { + "id": "listing-snapshot", + "relays": "wss://relay.example.com" + }, + "payload": { + "order_id": "order-1", + "listing_addr": "30402:seller_pubkey:AAAAAAAAAAAAAAAAAAAAAg", + "buyer_pubkey": "buyer_pubkey", + "seller_pubkey": "seller_pubkey", + "items": [ + { + "bin_id": "bin-1", + "bin_count": 2 + } + ] + } + }, + "expected": { + "wire_parts": { + "kind": 3422, + "content_type": "TradeOrderRequested", + "tags_shape": "active_trade_order_request_tags" + } + } + } + ] +} diff --git a/spec/conformance/vectors/trade/parse_order_decision.v1.json b/spec/conformance/vectors/trade/parse_order_decision.v1.json @@ -0,0 +1,22 @@ +{ + "suite": "trade", + "contract_version": "0.1.0", + "vectors": [ + { + "id": "trade_parse_order_decision_minimal_001", + "kind": "trade.parse_order_decision", + "input": { + "event": { + "kind": 3423, + "author": "seller_pubkey", + "content_type": "TradeOrderDecision", + "tags_shape": "active_trade_order_decision_tags" + } + }, + "expected": { + "envelope_shape": "active_trade_order_decision", + "payload_type": "RadrootsTradeOrderDecisionEvent" + } + } + ] +} diff --git a/spec/conformance/vectors/trade/parse_order_request.v1.json b/spec/conformance/vectors/trade/parse_order_request.v1.json @@ -0,0 +1,22 @@ +{ + "suite": "trade", + "contract_version": "0.1.0", + "vectors": [ + { + "id": "trade_parse_order_request_minimal_001", + "kind": "trade.parse_order_request", + "input": { + "event": { + "kind": 3422, + "author": "buyer_pubkey", + "content_type": "TradeOrderRequested", + "tags_shape": "active_trade_order_request_tags" + } + }, + "expected": { + "envelope_shape": "active_trade_order_request", + "payload_type": "RadrootsTradeOrderRequested" + } + } + ] +} diff --git a/spec/operations.toml b/spec/operations.toml @@ -18,6 +18,13 @@ public = [ "RadrootsFarm", "RadrootsListing", "RadrootsTradeEnvelope", + "RadrootsActiveTradeEnvelope", + "RadrootsActiveTradeMessageType", + "RadrootsTradeOrderItem", + "RadrootsTradeOrderRequested", + "RadrootsTradeInventoryCommitment", + "RadrootsTradeOrderDecision", + "RadrootsTradeOrderDecisionEvent", ] [errors] @@ -164,6 +171,51 @@ rust_types = ["radroots_events::trade::RadrootsTradeEnvelope"] [operations.trade_build_envelope_draft.conformance] vector = "spec/conformance/vectors/trade/build_envelope_draft.v1.json" +[operations.trade_build_order_request_draft] +domain = "trade" +id = "trade.build_order_request_draft" +stability = "beta" +inputs = ["RadrootsTradeOrderRequested", "RadrootsNostrEventPtr"] +outputs = ["WireEventParts"] +error_class = "encode_error" +deterministic = true +signing = "native" +transport = "native" + +[operations.trade_build_order_request_draft.implementation] +rust_modules = ["crates/events_codec/src/trade/encode.rs"] +rust_types = [ + "radroots_events::RadrootsNostrEventPtr", + "radroots_events::trade::RadrootsTradeOrderRequested", +] + +[operations.trade_build_order_request_draft.conformance] +vector = "spec/conformance/vectors/trade/build_order_request_draft.v1.json" + +[operations.trade_build_order_decision_draft] +domain = "trade" +id = "trade.build_order_decision_draft" +stability = "beta" +inputs = [ + "root_event_id", + "prev_event_id", + "RadrootsTradeOrderDecisionEvent", +] +outputs = ["WireEventParts"] +error_class = "encode_error" +deterministic = true +signing = "native" +transport = "native" + +[operations.trade_build_order_decision_draft.implementation] +rust_modules = ["crates/events_codec/src/trade/encode.rs"] +rust_types = [ + "radroots_events::trade::RadrootsTradeOrderDecisionEvent", +] + +[operations.trade_build_order_decision_draft.conformance] +vector = "spec/conformance/vectors/trade/build_order_decision_draft.v1.json" + [operations.trade_parse_envelope] domain = "trade" id = "trade.parse_envelope" @@ -185,6 +237,50 @@ rust_types = [ [operations.trade_parse_envelope.conformance] vector = "spec/conformance/vectors/trade/parse_envelope.v1.json" +[operations.trade_parse_order_request] +domain = "trade" +id = "trade.parse_order_request" +stability = "beta" +inputs = ["RadrootsNostrEvent"] +outputs = ["RadrootsActiveTradeEnvelope", "RadrootsTradeOrderRequested"] +error_class = "parse_error" +deterministic = true +signing = "native" +transport = "native" + +[operations.trade_parse_order_request.implementation] +rust_modules = ["crates/events_codec/src/trade/decode.rs"] +rust_types = [ + "radroots_events::RadrootsNostrEvent", + "radroots_events::trade::RadrootsActiveTradeEnvelope", + "radroots_events::trade::RadrootsTradeOrderRequested", +] + +[operations.trade_parse_order_request.conformance] +vector = "spec/conformance/vectors/trade/parse_order_request.v1.json" + +[operations.trade_parse_order_decision] +domain = "trade" +id = "trade.parse_order_decision" +stability = "beta" +inputs = ["RadrootsNostrEvent"] +outputs = ["RadrootsActiveTradeEnvelope", "RadrootsTradeOrderDecisionEvent"] +error_class = "parse_error" +deterministic = true +signing = "native" +transport = "native" + +[operations.trade_parse_order_decision.implementation] +rust_modules = ["crates/events_codec/src/trade/decode.rs"] +rust_types = [ + "radroots_events::RadrootsNostrEvent", + "radroots_events::trade::RadrootsActiveTradeEnvelope", + "radroots_events::trade::RadrootsTradeOrderDecisionEvent", +] + +[operations.trade_parse_order_decision.conformance] +vector = "spec/conformance/vectors/trade/parse_order_decision.v1.json" + [operations.trade_parse_listing_address] domain = "trade" id = "trade.parse_listing_address" diff --git a/spec/sdk-exports/go.toml b/spec/sdk-exports/go.toml @@ -19,7 +19,11 @@ order = 3 "listing.build_draft" = "listing.BuildDraft" "listing.parse_event" = "listing.ParseEvent" "trade.build_envelope_draft" = "trade.BuildEnvelopeDraft" +"trade.build_order_request_draft" = "trade.BuildOrderRequestDraft" +"trade.build_order_decision_draft" = "trade.BuildOrderDecisionDraft" "trade.parse_envelope" = "trade.ParseEnvelope" +"trade.parse_order_request" = "trade.ParseOrderRequest" +"trade.parse_order_decision" = "trade.ParseOrderDecision" "trade.parse_listing_address" = "trade.ParseListingAddress" "trade.validate_listing_event" = "trade.ValidateListingEvent" @@ -34,3 +38,10 @@ order = 3 "RadrootsFarm" = "RadrootsFarm" "RadrootsListing" = "RadrootsListing" "RadrootsTradeEnvelope" = "TradeEnvelope" +"RadrootsActiveTradeEnvelope" = "ActiveTradeEnvelope" +"RadrootsActiveTradeMessageType" = "ActiveTradeMessageType" +"RadrootsTradeOrderItem" = "TradeOrderItem" +"RadrootsTradeOrderRequested" = "TradeOrderRequested" +"RadrootsTradeInventoryCommitment" = "TradeInventoryCommitment" +"RadrootsTradeOrderDecision" = "TradeOrderDecision" +"RadrootsTradeOrderDecisionEvent" = "TradeOrderDecisionEvent" diff --git a/spec/sdk-exports/kotlin.toml b/spec/sdk-exports/kotlin.toml @@ -19,7 +19,11 @@ order = 2 "listing.build_draft" = "listing.buildDraft" "listing.parse_event" = "listing.parseEvent" "trade.build_envelope_draft" = "trade.buildEnvelopeDraft" +"trade.build_order_request_draft" = "trade.buildOrderRequestDraft" +"trade.build_order_decision_draft" = "trade.buildOrderDecisionDraft" "trade.parse_envelope" = "trade.parseEnvelope" +"trade.parse_order_request" = "trade.parseOrderRequest" +"trade.parse_order_decision" = "trade.parseOrderDecision" "trade.parse_listing_address" = "trade.parseListingAddress" "trade.validate_listing_event" = "trade.validateListingEvent" @@ -34,3 +38,10 @@ order = 2 "RadrootsFarm" = "RadrootsFarm" "RadrootsListing" = "RadrootsListing" "RadrootsTradeEnvelope" = "TradeEnvelope" +"RadrootsActiveTradeEnvelope" = "ActiveTradeEnvelope" +"RadrootsActiveTradeMessageType" = "ActiveTradeMessageType" +"RadrootsTradeOrderItem" = "TradeOrderItem" +"RadrootsTradeOrderRequested" = "TradeOrderRequested" +"RadrootsTradeInventoryCommitment" = "TradeInventoryCommitment" +"RadrootsTradeOrderDecision" = "TradeOrderDecision" +"RadrootsTradeOrderDecisionEvent" = "TradeOrderDecisionEvent" diff --git a/spec/sdk-exports/py.toml b/spec/sdk-exports/py.toml @@ -19,7 +19,11 @@ order = 3 "listing.build_draft" = "listing_build_draft" "listing.parse_event" = "listing_parse_event" "trade.build_envelope_draft" = "trade_build_envelope_draft" +"trade.build_order_request_draft" = "trade_build_order_request_draft" +"trade.build_order_decision_draft" = "trade_build_order_decision_draft" "trade.parse_envelope" = "trade_parse_envelope" +"trade.parse_order_request" = "trade_parse_order_request" +"trade.parse_order_decision" = "trade_parse_order_decision" "trade.parse_listing_address" = "trade_parse_listing_address" "trade.validate_listing_event" = "trade_validate_listing_event" @@ -34,3 +38,10 @@ order = 3 "RadrootsFarm" = "RadrootsFarm" "RadrootsListing" = "RadrootsListing" "RadrootsTradeEnvelope" = "TradeEnvelope" +"RadrootsActiveTradeEnvelope" = "ActiveTradeEnvelope" +"RadrootsActiveTradeMessageType" = "ActiveTradeMessageType" +"RadrootsTradeOrderItem" = "TradeOrderItem" +"RadrootsTradeOrderRequested" = "TradeOrderRequested" +"RadrootsTradeInventoryCommitment" = "TradeInventoryCommitment" +"RadrootsTradeOrderDecision" = "TradeOrderDecision" +"RadrootsTradeOrderDecisionEvent" = "TradeOrderDecisionEvent" diff --git a/spec/sdk-exports/swift.toml b/spec/sdk-exports/swift.toml @@ -19,7 +19,11 @@ order = 2 "listing.build_draft" = "listing.buildDraft" "listing.parse_event" = "listing.parseEvent" "trade.build_envelope_draft" = "trade.buildEnvelopeDraft" +"trade.build_order_request_draft" = "trade.buildOrderRequestDraft" +"trade.build_order_decision_draft" = "trade.buildOrderDecisionDraft" "trade.parse_envelope" = "trade.parseEnvelope" +"trade.parse_order_request" = "trade.parseOrderRequest" +"trade.parse_order_decision" = "trade.parseOrderDecision" "trade.parse_listing_address" = "trade.parseListingAddress" "trade.validate_listing_event" = "trade.validateListingEvent" @@ -34,3 +38,10 @@ order = 2 "RadrootsFarm" = "RadrootsFarm" "RadrootsListing" = "RadrootsListing" "RadrootsTradeEnvelope" = "TradeEnvelope" +"RadrootsActiveTradeEnvelope" = "ActiveTradeEnvelope" +"RadrootsActiveTradeMessageType" = "ActiveTradeMessageType" +"RadrootsTradeOrderItem" = "TradeOrderItem" +"RadrootsTradeOrderRequested" = "TradeOrderRequested" +"RadrootsTradeInventoryCommitment" = "TradeInventoryCommitment" +"RadrootsTradeOrderDecision" = "TradeOrderDecision" +"RadrootsTradeOrderDecisionEvent" = "TradeOrderDecisionEvent" diff --git a/spec/sdk-exports/ts.toml b/spec/sdk-exports/ts.toml @@ -20,7 +20,11 @@ order = 1 "listing.build_draft" = "listing.buildDraft" "listing.parse_event" = "listing.parseEvent" "trade.build_envelope_draft" = "trade.buildEnvelopeDraft" +"trade.build_order_request_draft" = "trade.buildOrderRequestDraft" +"trade.build_order_decision_draft" = "trade.buildOrderDecisionDraft" "trade.parse_envelope" = "trade.parseEnvelope" +"trade.parse_order_request" = "trade.parseOrderRequest" +"trade.parse_order_decision" = "trade.parseOrderDecision" "trade.parse_listing_address" = "trade.parseListingAddress" "trade.validate_listing_event" = "trade.validateListingEvent" @@ -35,6 +39,13 @@ order = 1 "RadrootsFarm" = "RadrootsFarm" "RadrootsListing" = "RadrootsListing" "RadrootsTradeEnvelope" = "TradeEnvelope" +"RadrootsActiveTradeEnvelope" = "ActiveTradeEnvelope" +"RadrootsActiveTradeMessageType" = "ActiveTradeMessageType" +"RadrootsTradeOrderItem" = "TradeOrderItem" +"RadrootsTradeOrderRequested" = "TradeOrderRequested" +"RadrootsTradeInventoryCommitment" = "TradeInventoryCommitment" +"RadrootsTradeOrderDecision" = "TradeOrderDecision" +"RadrootsTradeOrderDecisionEvent" = "TradeOrderDecisionEvent" [artifacts] models_dir = "src/generated"