lib

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

commit d19abac85fdcc489c8b7784dd745903b191d8127
parent d1288bb41029ef834fbe3c8688236f52352da51c
Author: triesap <tyson@radroots.org>
Date:   Tue, 28 Jul 2026 19:32:30 +0000

protocol: document public api contract

- document the versioned protocol surface features and trust boundaries
- publish a compiling aggregate contract inspection example
- expose the package README as crate-level Rust documentation
- record and link the reviewed all-features public API baseline

Diffstat:
Mcrates/protocol/README.md | 87++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Acrates/protocol/examples/inspect_contract.rs | 12++++++++++++
Mcrates/protocol/src/lib.rs | 3+--
Mdocs/api/README.md | 1+
Adocs/api/radroots_protocol.txt | 780+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 878 insertions(+), 5 deletions(-)

diff --git a/crates/protocol/README.md b/crates/protocol/README.md @@ -1,6 +1,87 @@ # radroots_protocol -Versioned cross-process and cross-language schemas for Radroots. +`radroots_protocol` defines the passive, versioned wire contracts shared by +Radroots processes and language bindings. It is a `no_std + alloc` foundation +crate: it validates schema identities and contract catalogs, but performs no +network, storage, signing, scheduling, or process-lifecycle work. -This package root is established for the Release V1 refactor. Its governed -modules and contracts are migrated in the subsequent protocol checkpoints. +The crate is pre-release and its Cargo version is frozen at `0.1.0-alpha` until +explicitly changed. Cargo package versions are independent from the version +numbers embedded in wire and schema contracts. + +## Contract surface + +| Module | Authority | +| --- | --- | +| `capability::v1` | transport capabilities, maturity, and availability | +| `error::v1` | stable, redaction-safe error reports and recovery guidance | +| `event::v1` | event-kind catalogs and the serialized trade-state vocabulary | +| `runtime::v1` | operation descriptors, risk, approval, idempotency, and effects | +| `radrootsd::transport_publish::v5` | daemon transport-publish request, job, outcome, and capability DTOs | +| `schema` | schema IDs, module generations, descriptors, and aggregate registries | + +All serialized DTOs live below an explicit generation module. The crate root +does not reexport individual DTOs, so consumers must name the contract version +they use. + +## Features + +| Feature | Default | Effect | +| --- | --- | --- | +| `std` | yes | implements standard-library error integration and enables `serde?/std` | +| `serde` | yes | derives serialization and deserialization for wire-contract types | + +Disabling default features leaves the catalog and structural validation APIs +available with `alloc` only. Enable `serde` without `std` for portable encoded +DTOs. + +## Validate the aggregate contract + +```rust +use radroots_protocol::{capability, event, runtime, schema}; + +capability::v1::validate_catalog(capability::v1::CATALOG).unwrap(); +event::v1::validate_catalog(event::v1::CATALOG).unwrap(); +event::v1::validate_trade_state_vocabulary(event::v1::TRADE_STATE_VOCABULARY) + .unwrap(); +runtime::v1::validate_catalog(runtime::v1::CATALOG).unwrap(); + +let registry = schema::protocol_v1_registry().unwrap(); +assert!(!registry.is_empty()); +``` + +For a runnable version, see +[`examples/inspect_contract.rs`](examples/inspect_contract.rs). + +## Serialization and trust boundaries + +Wire representations are stable only within their named generation. A caller +must deserialize into the intended version, run the module's structural +validation, and apply its own authorization and policy checks before acting on +the data. Successful deserialization alone does not make input trusted. + +Stable error reports intentionally carry only safe messages and bounded detail +values. Use `error::v1::ErrorReport::redacted_from_source` at sensitive +boundaries; do not copy secrets, credentials, raw upstream errors, or private +payloads into protocol DTOs. + +## Side effects, cancellation, and commit points + +This crate has no side effects, asynchronous work, cancellation mechanism, or +commit point. Runtime operation descriptors describe those properties; they do +not execute operations. The owning SDK, daemon, storage, signing, or transport +implementation must define cancellation behavior and must not report a commit +until its own durable boundary has succeeded. + +## Intended consumers + +The direct consumers are Radroots domain crates, SDK and daemon runtimes, +transport/storage/signing boundaries, generated bindings, and conformance +tools. Applications should normally enter through `radroots` or +`radroots_sdk`, using this crate directly only when implementing or inspecting +a versioned boundary. + +The package charter is the +[Release V1 specification](../../docs/specs/radroots_crates_release_v1.md). +The reviewed Rust surface is recorded in the +[public API baseline](../../docs/api/radroots_protocol.txt). diff --git a/crates/protocol/examples/inspect_contract.rs b/crates/protocol/examples/inspect_contract.rs @@ -0,0 +1,12 @@ +use radroots_protocol::{capability, event, runtime, schema}; + +fn main() -> Result<(), Box<dyn std::error::Error>> { + capability::v1::validate_catalog(capability::v1::CATALOG)?; + event::v1::validate_catalog(event::v1::CATALOG)?; + event::v1::validate_trade_state_vocabulary(event::v1::TRADE_STATE_VOCABULARY)?; + runtime::v1::validate_catalog(runtime::v1::CATALOG)?; + + let registry = schema::protocol_v1_registry()?; + println!("validated {} protocol schemas", registry.len()); + Ok(()) +} diff --git a/crates/protocol/src/lib.rs b/crates/protocol/src/lib.rs @@ -1,5 +1,4 @@ -//! Versioned wire contracts for Radroots. - +#![doc = include_str!("../README.md")] #![cfg_attr(not(feature = "std"), no_std)] #![forbid(unsafe_code)] diff --git a/docs/api/README.md b/docs/api/README.md @@ -33,3 +33,4 @@ expand a package beyond its charter. | `radroots_core` | [`radroots_core.txt`](radroots_core.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) | | `radroots_identity` | [`radroots_identity.txt`](radroots_identity.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) | | `radroots_blossom` | [`radroots_blossom.txt`](radroots_blossom.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) | +| `radroots_protocol` | [`radroots_protocol.txt`](radroots_protocol.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) | diff --git a/docs/api/radroots_protocol.txt b/docs/api/radroots_protocol.txt @@ -0,0 +1,780 @@ +pub mod radroots_protocol +pub mod radroots_protocol::capability +pub mod radroots_protocol::capability::v1 +pub enum radroots_protocol::capability::v1::Availability +pub radroots_protocol::capability::v1::Availability::Available +pub radroots_protocol::capability::v1::Availability::Degraded +pub radroots_protocol::capability::v1::Availability::Unavailable +#[non_exhaustive] pub enum radroots_protocol::capability::v1::Error +pub radroots_protocol::capability::v1::Error::DuplicateTransportKind +pub radroots_protocol::capability::v1::Error::DuplicateTransportKind::kind: radroots_protocol::capability::v1::TransportKind +pub radroots_protocol::capability::v1::Error::InvalidMeshScopeId +pub radroots_protocol::capability::v1::Error::InvalidReticulumDestination +pub radroots_protocol::capability::v1::Error::MissingRequiredTransport +pub radroots_protocol::capability::v1::Error::MissingRequiredTransport::kind: radroots_protocol::capability::v1::TransportKind +pub radroots_protocol::capability::v1::Error::UnknownTransportKind +pub radroots_protocol::capability::v1::Error::UnknownTransportKind::value: alloc::string::String +impl core::error::Error for radroots_protocol::capability::v1::Error +impl core::fmt::Display for radroots_protocol::capability::v1::Error +pub fn radroots_protocol::capability::v1::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub enum radroots_protocol::capability::v1::Maturity +pub radroots_protocol::capability::v1::Maturity::Preview +pub radroots_protocol::capability::v1::Maturity::Stable +pub enum radroots_protocol::capability::v1::TransportKind +pub radroots_protocol::capability::v1::TransportKind::Local +pub radroots_protocol::capability::v1::TransportKind::Nostr +pub radroots_protocol::capability::v1::TransportKind::Reticulum +impl radroots_protocol::capability::v1::TransportKind +pub const fn radroots_protocol::capability::v1::TransportKind::as_str(self) -> &'static str +pub fn radroots_protocol::capability::v1::TransportKind::parse(&str) -> core::result::Result<Self, radroots_protocol::capability::v1::Error> +pub struct radroots_protocol::capability::v1::MeshScopeId +impl radroots_protocol::capability::v1::MeshScopeId +pub fn radroots_protocol::capability::v1::MeshScopeId::as_str(&self) -> &str +pub fn radroots_protocol::capability::v1::MeshScopeId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_protocol::capability::v1::Error> +pub struct radroots_protocol::capability::v1::ReticulumDestination +impl radroots_protocol::capability::v1::ReticulumDestination +pub fn radroots_protocol::capability::v1::ReticulumDestination::as_str(&self) -> &str +pub fn radroots_protocol::capability::v1::ReticulumDestination::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_protocol::capability::v1::Error> +pub struct radroots_protocol::capability::v1::ReticulumTarget +pub radroots_protocol::capability::v1::ReticulumTarget::destination: radroots_protocol::capability::v1::ReticulumDestination +pub radroots_protocol::capability::v1::ReticulumTarget::mesh_scope: core::option::Option<radroots_protocol::capability::v1::MeshScopeId> +pub struct radroots_protocol::capability::v1::TransportDescriptor +pub radroots_protocol::capability::v1::TransportDescriptor::availability: radroots_protocol::capability::v1::Availability +pub radroots_protocol::capability::v1::TransportDescriptor::can_deliver: bool +pub radroots_protocol::capability::v1::TransportDescriptor::can_discover: bool +pub radroots_protocol::capability::v1::TransportDescriptor::can_fetch: bool +pub radroots_protocol::capability::v1::TransportDescriptor::can_gateway_forward: bool +pub radroots_protocol::capability::v1::TransportDescriptor::can_observe_receipts: bool +pub radroots_protocol::capability::v1::TransportDescriptor::kind: radroots_protocol::capability::v1::TransportKind +pub radroots_protocol::capability::v1::TransportDescriptor::maturity: radroots_protocol::capability::v1::Maturity +pub radroots_protocol::capability::v1::TransportDescriptor::required_for_v1: bool +pub const radroots_protocol::capability::v1::CATALOG: &[radroots_protocol::capability::v1::TransportDescriptor] +pub const radroots_protocol::capability::v1::SCHEMAS: &[radroots_protocol::schema::Metadata] +pub fn radroots_protocol::capability::v1::schema_registry() -> core::result::Result<radroots_protocol::schema::Registry, radroots_protocol::schema::Error> +pub fn radroots_protocol::capability::v1::validate_catalog(&[radroots_protocol::capability::v1::TransportDescriptor]) -> core::result::Result<(), radroots_protocol::capability::v1::Error> +pub mod radroots_protocol::error +pub mod radroots_protocol::error::v1 +pub enum radroots_protocol::error::v1::Class +pub radroots_protocol::error::v1::Class::Authorization +pub radroots_protocol::error::v1::Class::Capability +pub radroots_protocol::error::v1::Class::Conflict +pub radroots_protocol::error::v1::Class::Contract +pub radroots_protocol::error::v1::Class::Internal +pub radroots_protocol::error::v1::Class::Maintenance +pub radroots_protocol::error::v1::Class::Network +pub radroots_protocol::error::v1::Class::Operation +pub radroots_protocol::error::v1::Class::Privacy +pub radroots_protocol::error::v1::Class::Projection +pub radroots_protocol::error::v1::Class::Query +pub radroots_protocol::error::v1::Class::Resource +pub radroots_protocol::error::v1::Class::Runtime +pub radroots_protocol::error::v1::Class::Security +pub radroots_protocol::error::v1::Class::Signer +pub radroots_protocol::error::v1::Class::Storage +pub radroots_protocol::error::v1::Class::Sync +pub radroots_protocol::error::v1::Class::Unknown +pub radroots_protocol::error::v1::Class::Validation +pub enum radroots_protocol::error::v1::DetailValue +pub radroots_protocol::error::v1::DetailValue::Bool(bool) +pub radroots_protocol::error::v1::DetailValue::Signed(i64) +pub radroots_protocol::error::v1::DetailValue::Text(alloc::string::String) +pub radroots_protocol::error::v1::DetailValue::Unsigned(u64) +#[non_exhaustive] pub enum radroots_protocol::error::v1::Error +pub radroots_protocol::error::v1::Error::DescriptorMismatch +pub radroots_protocol::error::v1::Error::DescriptorMismatch::code: radroots_protocol::error::v1::KnownCode +pub radroots_protocol::error::v1::Error::DuplicateDetailKey +pub radroots_protocol::error::v1::Error::ExpectedUnknownCode +pub radroots_protocol::error::v1::Error::InvalidCapabilityId +pub radroots_protocol::error::v1::Error::InvalidCode +pub radroots_protocol::error::v1::Error::InvalidDetailKey +pub radroots_protocol::error::v1::Error::InvalidDetailText +pub radroots_protocol::error::v1::Error::InvalidSafeMessage +pub radroots_protocol::error::v1::Error::InvalidUnknownCodePolicy +pub radroots_protocol::error::v1::Error::SensitiveDetailKey +pub radroots_protocol::error::v1::Error::SensitiveMessage +pub radroots_protocol::error::v1::Error::TooManyDetails +pub radroots_protocol::error::v1::Error::UnsupportedSchemaVersion +pub radroots_protocol::error::v1::Error::UnsupportedSchemaVersion::version: u16 +impl core::error::Error for radroots_protocol::error::v1::Error +impl core::fmt::Display for radroots_protocol::error::v1::Error +pub fn radroots_protocol::error::v1::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub enum radroots_protocol::error::v1::KnownCode +pub radroots_protocol::error::v1::KnownCode::AmbiguousTrade +pub radroots_protocol::error::v1::KnownCode::ApprovalExpired +pub radroots_protocol::error::v1::KnownCode::ApprovalInvalid +pub radroots_protocol::error::v1::KnownCode::ApprovalReplayed +pub radroots_protocol::error::v1::KnownCode::ApprovalRequired +pub radroots_protocol::error::v1::KnownCode::AuthorizationDenied +pub radroots_protocol::error::v1::KnownCode::Backpressure +pub radroots_protocol::error::v1::KnownCode::BackupAuthenticationFailed +pub radroots_protocol::error::v1::KnownCode::BackupInvalid +pub radroots_protocol::error::v1::KnownCode::CancelledNoCommit +pub radroots_protocol::error::v1::KnownCode::DatabaseBusy +pub radroots_protocol::error::v1::KnownCode::DeadlineExceeded +pub radroots_protocol::error::v1::KnownCode::DmRelayUnconfigured +pub radroots_protocol::error::v1::KnownCode::IdempotencyConflict +pub radroots_protocol::error::v1::KnownCode::InternalError +pub radroots_protocol::error::v1::KnownCode::InvalidArgument +pub radroots_protocol::error::v1::KnownCode::InvalidCursor +pub radroots_protocol::error::v1::KnownCode::InventoryUnavailable +pub radroots_protocol::error::v1::KnownCode::LocalCommittedDeliveryPending +pub radroots_protocol::error::v1::KnownCode::MaintenanceInProgress +pub radroots_protocol::error::v1::KnownCode::MediaPolicyDenied +pub radroots_protocol::error::v1::KnownCode::NotFound +pub radroots_protocol::error::v1::KnownCode::OperationInProgress +pub radroots_protocol::error::v1::KnownCode::PreconditionChanged +pub radroots_protocol::error::v1::KnownCode::PrivateDataUnavailable +pub radroots_protocol::error::v1::KnownCode::ProfileWriterInUse +pub radroots_protocol::error::v1::KnownCode::ProjectionFailed +pub radroots_protocol::error::v1::KnownCode::ProjectionGenerationChanged +pub radroots_protocol::error::v1::KnownCode::ProjectionStale +pub radroots_protocol::error::v1::KnownCode::RelayAuthRejected +pub radroots_protocol::error::v1::KnownCode::RelayAuthRequired +pub radroots_protocol::error::v1::KnownCode::RelayPaymentRequired +pub radroots_protocol::error::v1::KnownCode::RelayPolicyRestricted +pub radroots_protocol::error::v1::KnownCode::RelayPowRequired +pub radroots_protocol::error::v1::KnownCode::RelayRateLimited +pub radroots_protocol::error::v1::KnownCode::RestoreFailed +pub radroots_protocol::error::v1::KnownCode::RevisionRequired +pub radroots_protocol::error::v1::KnownCode::SchemaTooNew +pub radroots_protocol::error::v1::KnownCode::SignerCancelled +pub radroots_protocol::error::v1::KnownCode::SignerCapabilityMissing +pub radroots_protocol::error::v1::KnownCode::SignerRejected +pub radroots_protocol::error::v1::KnownCode::SignerTimeout +pub radroots_protocol::error::v1::KnownCode::SignerUnavailable +pub radroots_protocol::error::v1::KnownCode::StaleListingRevision +pub radroots_protocol::error::v1::KnownCode::StorageIntegrityFailed +pub radroots_protocol::error::v1::KnownCode::StorageSpaceInsufficient +pub radroots_protocol::error::v1::KnownCode::SyncPartial +pub radroots_protocol::error::v1::KnownCode::SyncSaturated +pub radroots_protocol::error::v1::KnownCode::TransportOperationUnavailable +pub radroots_protocol::error::v1::KnownCode::TransportPartial +pub radroots_protocol::error::v1::KnownCode::UnsupportedCapability +pub radroots_protocol::error::v1::KnownCode::UnsupportedContractVersion +pub radroots_protocol::error::v1::KnownCode::UnsupportedProfileSchema +pub radroots_protocol::error::v1::KnownCode::ValidationExpired +pub radroots_protocol::error::v1::KnownCode::ValidationPending +pub radroots_protocol::error::v1::KnownCode::ValidatorSetInvalid +impl radroots_protocol::error::v1::KnownCode +pub const radroots_protocol::error::v1::KnownCode::ALL: &'static [Self] +pub const fn radroots_protocol::error::v1::KnownCode::as_str(self) -> &'static str +pub const fn radroots_protocol::error::v1::KnownCode::descriptor(self) -> radroots_protocol::error::v1::Descriptor +pub fn radroots_protocol::error::v1::KnownCode::parse(&str) -> core::option::Option<Self> +pub enum radroots_protocol::error::v1::RecoveryAction +pub radroots_protocol::error::v1::RecoveryAction::CompleteSignerAuthentication +pub radroots_protocol::error::v1::RecoveryAction::ConfigureGeoNamesCache +pub radroots_protocol::error::v1::RecoveryAction::ConfigureSigner +pub radroots_protocol::error::v1::RecoveryAction::ConfigureTransportTargets +pub radroots_protocol::error::v1::RecoveryAction::EnableRequiredFeature +pub radroots_protocol::error::v1::RecoveryAction::FixRequest +pub radroots_protocol::error::v1::RecoveryAction::InspectGeoNamesAsset +pub radroots_protocol::error::v1::RecoveryAction::InspectLocalStores +pub radroots_protocol::error::v1::RecoveryAction::RetryAfterTransportFailure +pub radroots_protocol::error::v1::RecoveryAction::RetryGeoNamesDownload +pub radroots_protocol::error::v1::RecoveryAction::RetryOperationWithSameIdempotencyKey +pub radroots_protocol::error::v1::RecoveryAction::SelectAuthorizedActor +pub struct radroots_protocol::error::v1::CapabilityId(_) +impl radroots_protocol::error::v1::CapabilityId +pub fn radroots_protocol::error::v1::CapabilityId::as_str(&self) -> &str +pub fn radroots_protocol::error::v1::CapabilityId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_protocol::error::v1::Error> +impl serde_core::ser::Serialize for radroots_protocol::error::v1::CapabilityId +pub fn radroots_protocol::error::v1::CapabilityId::serialize<S>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error> where S: serde_core::ser::Serializer +impl<'de> serde_core::de::Deserialize<'de> for radroots_protocol::error::v1::CapabilityId +pub fn radroots_protocol::error::v1::CapabilityId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de> +pub struct radroots_protocol::error::v1::Code(_) +impl radroots_protocol::error::v1::Code +pub fn radroots_protocol::error::v1::Code::as_str(&self) -> &str +pub fn radroots_protocol::error::v1::Code::known(radroots_protocol::error::v1::KnownCode) -> Self +pub fn radroots_protocol::error::v1::Code::known_code(&self) -> core::option::Option<radroots_protocol::error::v1::KnownCode> +pub fn radroots_protocol::error::v1::Code::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_protocol::error::v1::Error> +impl serde_core::ser::Serialize for radroots_protocol::error::v1::Code +pub fn radroots_protocol::error::v1::Code::serialize<S>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error> where S: serde_core::ser::Serializer +impl<'de> serde_core::de::Deserialize<'de> for radroots_protocol::error::v1::Code +pub fn radroots_protocol::error::v1::Code::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de> +pub struct radroots_protocol::error::v1::Descriptor +pub radroots_protocol::error::v1::Descriptor::class: radroots_protocol::error::v1::Class +pub radroots_protocol::error::v1::Descriptor::code: radroots_protocol::error::v1::KnownCode +pub radroots_protocol::error::v1::Descriptor::recovery_actions: &'static [radroots_protocol::error::v1::RecoveryAction] +pub radroots_protocol::error::v1::Descriptor::retryable: bool +pub struct radroots_protocol::error::v1::Detail +pub radroots_protocol::error::v1::Detail::key: alloc::string::String +pub radroots_protocol::error::v1::Detail::value: radroots_protocol::error::v1::DetailValue +impl radroots_protocol::error::v1::Detail +pub fn radroots_protocol::error::v1::Detail::new(impl core::convert::Into<alloc::string::String>, radroots_protocol::error::v1::DetailValue) -> Self +pub struct radroots_protocol::error::v1::ErrorReport +impl radroots_protocol::error::v1::ErrorReport +pub fn radroots_protocol::error::v1::ErrorReport::capability_id(&self) -> core::option::Option<&radroots_protocol::error::v1::CapabilityId> +pub const fn radroots_protocol::error::v1::ErrorReport::class(&self) -> radroots_protocol::error::v1::Class +pub fn radroots_protocol::error::v1::ErrorReport::code(&self) -> &radroots_protocol::error::v1::Code +pub fn radroots_protocol::error::v1::ErrorReport::details(&self) -> &radroots_protocol::error::v1::SafeDetails +pub fn radroots_protocol::error::v1::ErrorReport::known(radroots_protocol::error::v1::KnownCode, core::option::Option<radroots_protocol::runtime::v1::OperationId>, core::option::Option<radroots_protocol::error::v1::CapabilityId>, radroots_protocol::error::v1::SafeMessage, radroots_protocol::error::v1::SafeDetails) -> Self +pub fn radroots_protocol::error::v1::ErrorReport::message(&self) -> &radroots_protocol::error::v1::SafeMessage +pub const fn radroots_protocol::error::v1::ErrorReport::operation_id(&self) -> core::option::Option<radroots_protocol::runtime::v1::OperationId> +pub fn radroots_protocol::error::v1::ErrorReport::recovery_actions(&self) -> &[radroots_protocol::error::v1::RecoveryAction] +pub fn radroots_protocol::error::v1::ErrorReport::redacted_from_source(radroots_protocol::error::v1::KnownCode, core::option::Option<radroots_protocol::runtime::v1::OperationId>, core::option::Option<radroots_protocol::error::v1::CapabilityId>) -> Self +pub const fn radroots_protocol::error::v1::ErrorReport::retryable(&self) -> bool +pub const fn radroots_protocol::error::v1::ErrorReport::schema_version(&self) -> u16 +pub fn radroots_protocol::error::v1::ErrorReport::unknown(radroots_protocol::error::v1::Code) -> core::result::Result<Self, radroots_protocol::error::v1::Error> +pub fn radroots_protocol::error::v1::ErrorReport::validate(&self) -> core::result::Result<(), radroots_protocol::error::v1::Error> +impl<'de> serde_core::de::Deserialize<'de> for radroots_protocol::error::v1::ErrorReport +pub fn radroots_protocol::error::v1::ErrorReport::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de> +pub struct radroots_protocol::error::v1::SafeDetails +impl radroots_protocol::error::v1::SafeDetails +pub fn radroots_protocol::error::v1::SafeDetails::entries(&self) -> &[radroots_protocol::error::v1::Detail] +pub fn radroots_protocol::error::v1::SafeDetails::is_empty(&self) -> bool +pub fn radroots_protocol::error::v1::SafeDetails::try_new(impl core::iter::traits::collect::IntoIterator<Item = radroots_protocol::error::v1::Detail>) -> core::result::Result<Self, radroots_protocol::error::v1::Error> +impl core::convert::From<radroots_protocol::error::v1::SafeDetails> for alloc::vec::Vec<radroots_protocol::error::v1::Detail> +pub fn alloc::vec::Vec<radroots_protocol::error::v1::Detail>::from(radroots_protocol::error::v1::SafeDetails) -> Self +impl core::convert::TryFrom<alloc::vec::Vec<radroots_protocol::error::v1::Detail>> for radroots_protocol::error::v1::SafeDetails +pub type radroots_protocol::error::v1::SafeDetails::Error = radroots_protocol::error::v1::Error +pub fn radroots_protocol::error::v1::SafeDetails::try_from(alloc::vec::Vec<radroots_protocol::error::v1::Detail>) -> core::result::Result<Self, Self::Error> +pub struct radroots_protocol::error::v1::SafeMessage(_) +impl radroots_protocol::error::v1::SafeMessage +pub fn radroots_protocol::error::v1::SafeMessage::as_str(&self) -> &str +pub fn radroots_protocol::error::v1::SafeMessage::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_protocol::error::v1::Error> +pub fn radroots_protocol::error::v1::SafeMessage::redacted() -> Self +impl serde_core::ser::Serialize for radroots_protocol::error::v1::SafeMessage +pub fn radroots_protocol::error::v1::SafeMessage::serialize<S>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error> where S: serde_core::ser::Serializer +impl<'de> serde_core::de::Deserialize<'de> for radroots_protocol::error::v1::SafeMessage +pub fn radroots_protocol::error::v1::SafeMessage::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de> +pub const radroots_protocol::error::v1::CATALOG: &[radroots_protocol::error::v1::Descriptor] +pub const radroots_protocol::error::v1::REDACTED_MESSAGE: &str +pub const radroots_protocol::error::v1::SCHEMAS: &[radroots_protocol::schema::Metadata] +pub const radroots_protocol::error::v1::SCHEMA_ID: &str +pub const radroots_protocol::error::v1::SCHEMA_VERSION: u16 +pub fn radroots_protocol::error::v1::schema_registry() -> core::result::Result<radroots_protocol::schema::Registry, radroots_protocol::schema::Error> +pub mod radroots_protocol::event +pub mod radroots_protocol::event::v1 +#[non_exhaustive] pub enum radroots_protocol::event::v1::Error +pub radroots_protocol::event::v1::Error::DuplicateEventKind +pub radroots_protocol::event::v1::Error::DuplicateEventKind::kind: u32 +pub radroots_protocol::event::v1::Error::DuplicateEventName +pub radroots_protocol::event::v1::Error::DuplicateEventName::name: alloc::string::String +pub radroots_protocol::event::v1::Error::DuplicateTradeState +pub radroots_protocol::event::v1::Error::DuplicateTradeState::state: radroots_protocol::event::v1::TradeState +pub radroots_protocol::event::v1::Error::RetiredEventKind +pub radroots_protocol::event::v1::Error::RetiredEventKind::kind: u32 +pub radroots_protocol::event::v1::Error::RetiredEventName +pub radroots_protocol::event::v1::Error::RetiredEventName::name: alloc::string::String +pub radroots_protocol::event::v1::Error::RetiredTradeState +pub radroots_protocol::event::v1::Error::RetiredTradeState::state: alloc::string::String +pub radroots_protocol::event::v1::Error::UnknownTradeState +pub radroots_protocol::event::v1::Error::UnknownTradeState::value: alloc::string::String +impl core::error::Error for radroots_protocol::event::v1::Error +impl core::fmt::Display for radroots_protocol::event::v1::Error +pub fn radroots_protocol::event::v1::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub enum radroots_protocol::event::v1::EventClass +pub radroots_protocol::event::v1::EventClass::Addressable +pub radroots_protocol::event::v1::EventClass::Regular +pub radroots_protocol::event::v1::EventClass::Replaceable +pub radroots_protocol::event::v1::EventClass::UnsignedRumor +pub enum radroots_protocol::event::v1::TradeState +pub radroots_protocol::event::v1::TradeState::AgreedPendingValidation +pub radroots_protocol::event::v1::TradeState::Cancelled +pub radroots_protocol::event::v1::TradeState::Committed +pub radroots_protocol::event::v1::TradeState::Declined +pub radroots_protocol::event::v1::TradeState::Invalid +pub radroots_protocol::event::v1::TradeState::Missing +pub radroots_protocol::event::v1::TradeState::Requested +pub radroots_protocol::event::v1::TradeState::ValidationExpired +impl radroots_protocol::event::v1::TradeState +pub const fn radroots_protocol::event::v1::TradeState::as_str(self) -> &'static str +pub fn radroots_protocol::event::v1::TradeState::parse(&str) -> core::result::Result<Self, radroots_protocol::event::v1::Error> +pub struct radroots_protocol::event::v1::EventDescriptor +pub radroots_protocol::event::v1::EventDescriptor::event_class: radroots_protocol::event::v1::EventClass +pub radroots_protocol::event::v1::EventDescriptor::kind: u32 +pub radroots_protocol::event::v1::EventDescriptor::name: &'static str +pub radroots_protocol::event::v1::EventDescriptor::purpose: &'static str +pub const radroots_protocol::event::v1::CATALOG: &[radroots_protocol::event::v1::EventDescriptor] +pub const radroots_protocol::event::v1::RETIRED_KINDS: &[u32] +pub const radroots_protocol::event::v1::SCHEMAS: &[radroots_protocol::schema::Metadata] +pub const radroots_protocol::event::v1::TRADE_STATE_VOCABULARY: &[radroots_protocol::event::v1::TradeState] +pub fn radroots_protocol::event::v1::schema_registry() -> core::result::Result<radroots_protocol::schema::Registry, radroots_protocol::schema::Error> +pub fn radroots_protocol::event::v1::validate_catalog(&[radroots_protocol::event::v1::EventDescriptor]) -> core::result::Result<(), radroots_protocol::event::v1::Error> +pub fn radroots_protocol::event::v1::validate_trade_state_vocabulary(&[radroots_protocol::event::v1::TradeState]) -> core::result::Result<(), radroots_protocol::event::v1::Error> +pub mod radroots_protocol::radrootsd +pub mod radroots_protocol::radrootsd::transport_publish +pub mod radroots_protocol::radrootsd::transport_publish::v5 +pub enum radroots_protocol::radrootsd::transport_publish::v5::CapabilityAvailability +pub radroots_protocol::radrootsd::transport_publish::v5::CapabilityAvailability::Available +pub radroots_protocol::radrootsd::transport_publish::v5::CapabilityAvailability::Degraded +pub radroots_protocol::radrootsd::transport_publish::v5::CapabilityAvailability::Unavailable +pub enum radroots_protocol::radrootsd::transport_publish::v5::CapabilityMaturity +pub radroots_protocol::radrootsd::transport_publish::v5::CapabilityMaturity::Preview +pub radroots_protocol::radrootsd::transport_publish::v5::CapabilityMaturity::Stable +pub enum radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy +pub radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy::All +pub radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy::Any +pub radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy::Quorum +pub radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy::Quorum::quorum: usize +pub radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy::RequiredTargets +pub radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy::RequiredTargets::targets: alloc::vec::Vec<radroots_protocol::radrootsd::transport_publish::v5::TargetFingerprint> +impl radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy +pub fn radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy::required_target_count(&self, usize) -> usize +pub fn radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy::required_targets(alloc::vec::Vec<radroots_protocol::radrootsd::transport_publish::v5::TargetFingerprint>) -> core::result::Result<Self, radroots_protocol::radrootsd::transport_publish::v5::Error> +pub fn radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy::validate(&self) -> core::result::Result<(), radroots_protocol::radrootsd::transport_publish::v5::Error> +pub enum radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicyName +pub radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicyName::All +pub radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicyName::Any +pub radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicyName::Quorum +pub radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicyName::RequiredTargets +pub enum radroots_protocol::radrootsd::transport_publish::v5::Error +pub radroots_protocol::radrootsd::transport_publish::v5::Error::DuplicateRequiredTargetFingerprint +pub radroots_protocol::radrootsd::transport_publish::v5::Error::DuplicateRequiredTargetFingerprint::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::DuplicateTarget +pub radroots_protocol::radrootsd::transport_publish::v5::Error::DuplicateTarget::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyEndpointUri +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyEndpointUri::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyIdempotencyKey +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyJobId +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyPrincipalId +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyRawEventJson +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyRequiredTargetSet +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyTag +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyTag::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyTargetLabel +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyTargetLabel::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyTargetScope +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyTargetScope::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyTargetSet +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyTransportKind +pub radroots_protocol::radrootsd::transport_publish::v5::Error::EmptyTransportKind::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidEndpointUri +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidEndpointUri::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidExplicitTargetOutcome +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidExplicitTargetOutcome::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidHexField +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidHexField::expected_len: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidHexField::field: &'static str +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobAcknowledgedCount +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobAcknowledgedCount::actual: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobAcknowledgedCount::expected: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobCompletedAt +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobDeliverySatisfiedState +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobRetryableCount +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobRetryableCount::actual: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobRetryableCount::expected: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobStatusState +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobTargetCount +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobTargetCount::actual: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobTargetCount::expected: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobTerminalCount +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobTerminalCount::actual: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobTerminalCount::expected: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidJobTerminalState +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidQuorum +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidReticulumBehavior +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidReticulumBehavior::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidReticulumEndpoint +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidReticulumEndpoint::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidReticulumOutcome +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidReticulumOutcome::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidTargetLabel +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidTargetLabel::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidTargetOutcomeKind +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidTargetOutcomeKind::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidTargetScope +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidTargetScope::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidTargetSource +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidTargetSource::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidTimeoutMs +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidTransportKind +pub radroots_protocol::radrootsd::transport_publish::v5::Error::InvalidTransportKind::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::RequiredTargetNotInTargetSet +pub radroots_protocol::radrootsd::transport_publish::v5::Error::RequiredTargetNotInTargetSet::index: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::TargetLimitExceeded +pub radroots_protocol::radrootsd::transport_publish::v5::Error::TargetLimitExceeded::actual: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Error::TargetLimitExceeded::max: usize +impl core::error::Error for radroots_protocol::radrootsd::transport_publish::v5::Error +impl core::fmt::Display for radroots_protocol::radrootsd::transport_publish::v5::Error +pub fn radroots_protocol::radrootsd::transport_publish::v5::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub enum radroots_protocol::radrootsd::transport_publish::v5::Implementation +pub radroots_protocol::radrootsd::transport_publish::v5::Implementation::Mock +pub radroots_protocol::radrootsd::transport_publish::v5::Implementation::Real +pub enum radroots_protocol::radrootsd::transport_publish::v5::JobStatus +pub radroots_protocol::radrootsd::transport_publish::v5::JobStatus::Accepted +pub radroots_protocol::radrootsd::transport_publish::v5::JobStatus::DeliveryDeferred +pub radroots_protocol::radrootsd::transport_publish::v5::JobStatus::DeliveryDeferredUntilImplemented +pub radroots_protocol::radrootsd::transport_publish::v5::JobStatus::DeliverySatisfied +pub radroots_protocol::radrootsd::transport_publish::v5::JobStatus::DeliveryUnsatisfiedRetryable +pub radroots_protocol::radrootsd::transport_publish::v5::JobStatus::DeliveryUnsatisfiedTerminal +pub radroots_protocol::radrootsd::transport_publish::v5::JobStatus::Publishing +pub radroots_protocol::radrootsd::transport_publish::v5::JobStatus::Rejected +pub enum radroots_protocol::radrootsd::transport_publish::v5::NostrTargetSourcePolicy +pub radroots_protocol::radrootsd::transport_publish::v5::NostrTargetSourcePolicy::AuthorWriteThenDaemonDefault +pub radroots_protocol::radrootsd::transport_publish::v5::NostrTargetSourcePolicy::DaemonDefaultOnly +pub radroots_protocol::radrootsd::transport_publish::v5::NostrTargetSourcePolicy::ExplicitOnly +pub radroots_protocol::radrootsd::transport_publish::v5::NostrTargetSourcePolicy::RequestThenAuthorWriteThenDaemonDefault +pub enum radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::Accepted +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::AuthRequired +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::Blocked +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::ConnectionFailed +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::DeferredUntilImplemented +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::DuplicateAccepted +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::Error +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::Invalid +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::Muted +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::PaymentRequired +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::PowRequired +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::RateLimited +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::Restricted +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::SkippedAlreadyAccepted +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::TargetRejected +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::Timeout +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::Unknown +pub radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::Unsupported +impl radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind +pub fn radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::counts_toward_accepted_delivery(self) -> bool +pub fn radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::is_deferred_until_implemented(self) -> bool +pub fn radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::is_retryable(self) -> bool +pub fn radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind::is_terminal_failure(self) -> bool +pub enum radroots_protocol::radrootsd::transport_publish::v5::ReticulumBehavior +pub radroots_protocol::radrootsd::transport_publish::v5::ReticulumBehavior::DeferDeliveryPlans +pub radroots_protocol::radrootsd::transport_publish::v5::ReticulumBehavior::RejectDeliveryAttempts +pub enum radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy +pub radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy::ExplicitTargets +pub radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy::ExplicitTargets::targets: alloc::vec::Vec<radroots_protocol::radrootsd::transport_publish::v5::Target> +pub radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy::Nostr +pub radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy::Nostr::relay_urls: alloc::vec::Vec<alloc::string::String> +pub radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy::Nostr::source_policy: radroots_protocol::radrootsd::transport_publish::v5::NostrTargetSourcePolicy +impl radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy +pub fn radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy::explicit_targets(alloc::vec::Vec<radroots_protocol::radrootsd::transport_publish::v5::Target>) -> Self +pub fn radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy::nostr(radroots_protocol::radrootsd::transport_publish::v5::NostrTargetSourcePolicy, alloc::vec::Vec<alloc::string::String>) -> Self +pub fn radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy::request_target_count(&self) -> usize +pub enum radroots_protocol::radrootsd::transport_publish::v5::TargetPolicyName +pub radroots_protocol::radrootsd::transport_publish::v5::TargetPolicyName::ExplicitTargets +pub radroots_protocol::radrootsd::transport_publish::v5::TargetPolicyName::Nostr +pub enum radroots_protocol::radrootsd::transport_publish::v5::TargetSource +pub radroots_protocol::radrootsd::transport_publish::v5::TargetSource::DaemonDefault +pub radroots_protocol::radrootsd::transport_publish::v5::TargetSource::NostrAuthorWrite +pub radroots_protocol::radrootsd::transport_publish::v5::TargetSource::Request +pub radroots_protocol::radrootsd::transport_publish::v5::TargetSource::Reticulum +pub struct radroots_protocol::radrootsd::transport_publish::v5::AuthCapabilities +pub radroots_protocol::radrootsd::transport_publish::v5::AuthCapabilities::mode: alloc::string::String +pub struct radroots_protocol::radrootsd::transport_publish::v5::Capabilities +pub radroots_protocol::radrootsd::transport_publish::v5::Capabilities::api_version: alloc::string::String +pub radroots_protocol::radrootsd::transport_publish::v5::Capabilities::auth: radroots_protocol::radrootsd::transport_publish::v5::AuthCapabilities +pub radroots_protocol::radrootsd::transport_publish::v5::Capabilities::daemon: alloc::string::String +pub radroots_protocol::radrootsd::transport_publish::v5::Capabilities::methods: alloc::vec::Vec<alloc::string::String> +pub radroots_protocol::radrootsd::transport_publish::v5::Capabilities::publish: radroots_protocol::radrootsd::transport_publish::v5::SurfaceCapabilities +pub radroots_protocol::radrootsd::transport_publish::v5::Capabilities::transports: alloc::vec::Vec<alloc::string::String> +impl radroots_protocol::radrootsd::transport_publish::v5::Capabilities +pub fn radroots_protocol::radrootsd::transport_publish::v5::Capabilities::v5(usize, usize) -> Self +pub struct radroots_protocol::radrootsd::transport_publish::v5::EventRequest +pub radroots_protocol::radrootsd::transport_publish::v5::EventRequest::delivery_policy: radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy +pub radroots_protocol::radrootsd::transport_publish::v5::EventRequest::idempotency_key: core::option::Option<alloc::string::String> +pub radroots_protocol::radrootsd::transport_publish::v5::EventRequest::raw_event_json: alloc::string::String +pub radroots_protocol::radrootsd::transport_publish::v5::EventRequest::target_policy: radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy +pub radroots_protocol::radrootsd::transport_publish::v5::EventRequest::timeout_ms: core::option::Option<u64> +impl radroots_protocol::radrootsd::transport_publish::v5::EventRequest +pub fn radroots_protocol::radrootsd::transport_publish::v5::EventRequest::validate(&self, usize) -> core::result::Result<(), radroots_protocol::radrootsd::transport_publish::v5::Error> +pub struct radroots_protocol::radrootsd::transport_publish::v5::EventResponse +pub radroots_protocol::radrootsd::transport_publish::v5::EventResponse::deduplicated: bool +pub radroots_protocol::radrootsd::transport_publish::v5::EventResponse::job: radroots_protocol::radrootsd::transport_publish::v5::Job +pub struct radroots_protocol::radrootsd::transport_publish::v5::Job +pub radroots_protocol::radrootsd::transport_publish::v5::Job::acknowledged_count: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Job::completed_at_ms: core::option::Option<i64> +pub radroots_protocol::radrootsd::transport_publish::v5::Job::delivery_policy: radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy +pub radroots_protocol::radrootsd::transport_publish::v5::Job::delivery_satisfied: bool +pub radroots_protocol::radrootsd::transport_publish::v5::Job::event_id: alloc::string::String +pub radroots_protocol::radrootsd::transport_publish::v5::Job::event_kind: u32 +pub radroots_protocol::radrootsd::transport_publish::v5::Job::job_id: alloc::string::String +pub radroots_protocol::radrootsd::transport_publish::v5::Job::last_error: core::option::Option<alloc::string::String> +pub radroots_protocol::radrootsd::transport_publish::v5::Job::pubkey: alloc::string::String +pub radroots_protocol::radrootsd::transport_publish::v5::Job::requested_at_ms: i64 +pub radroots_protocol::radrootsd::transport_publish::v5::Job::retryable_count: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Job::status: radroots_protocol::radrootsd::transport_publish::v5::JobStatus +pub radroots_protocol::radrootsd::transport_publish::v5::Job::target_count: usize +pub radroots_protocol::radrootsd::transport_publish::v5::Job::target_policy: radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy +pub radroots_protocol::radrootsd::transport_publish::v5::Job::targets: alloc::vec::Vec<radroots_protocol::radrootsd::transport_publish::v5::TargetOutcome> +pub radroots_protocol::radrootsd::transport_publish::v5::Job::terminal: bool +pub radroots_protocol::radrootsd::transport_publish::v5::Job::terminal_count: usize +impl radroots_protocol::radrootsd::transport_publish::v5::Job +pub fn radroots_protocol::radrootsd::transport_publish::v5::Job::validate(&self) -> core::result::Result<(), radroots_protocol::radrootsd::transport_publish::v5::Error> +pub struct radroots_protocol::radrootsd::transport_publish::v5::OperationCapabilities +pub radroots_protocol::radrootsd::transport_publish::v5::OperationCapabilities::deliver: bool +pub radroots_protocol::radrootsd::transport_publish::v5::OperationCapabilities::discovery: bool +pub radroots_protocol::radrootsd::transport_publish::v5::OperationCapabilities::fetch: bool +pub radroots_protocol::radrootsd::transport_publish::v5::OperationCapabilities::gateway_forwarding: bool +pub radroots_protocol::radrootsd::transport_publish::v5::OperationCapabilities::receipt_observation: bool +pub struct radroots_protocol::radrootsd::transport_publish::v5::SurfaceCapabilities +pub radroots_protocol::radrootsd::transport_publish::v5::SurfaceCapabilities::delivery_policies: alloc::vec::Vec<radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicyName> +pub radroots_protocol::radrootsd::transport_publish::v5::SurfaceCapabilities::max_event_bytes: usize +pub radroots_protocol::radrootsd::transport_publish::v5::SurfaceCapabilities::max_targets_per_request: usize +pub radroots_protocol::radrootsd::transport_publish::v5::SurfaceCapabilities::raw_event_json_ingress: bool +pub radroots_protocol::radrootsd::transport_publish::v5::SurfaceCapabilities::server_side_user_signing: bool +pub radroots_protocol::radrootsd::transport_publish::v5::SurfaceCapabilities::target_policy_modes: alloc::vec::Vec<radroots_protocol::radrootsd::transport_publish::v5::TargetPolicyName> +pub radroots_protocol::radrootsd::transport_publish::v5::SurfaceCapabilities::transports: alloc::vec::Vec<radroots_protocol::radrootsd::transport_publish::v5::TransportCapability> +pub struct radroots_protocol::radrootsd::transport_publish::v5::Target +pub radroots_protocol::radrootsd::transport_publish::v5::Target::endpoint_uri: alloc::string::String +pub radroots_protocol::radrootsd::transport_publish::v5::Target::reticulum_behavior: core::option::Option<radroots_protocol::radrootsd::transport_publish::v5::ReticulumBehavior> +pub radroots_protocol::radrootsd::transport_publish::v5::Target::target_label: core::option::Option<alloc::string::String> +pub radroots_protocol::radrootsd::transport_publish::v5::Target::target_scope: core::option::Option<alloc::string::String> +pub radroots_protocol::radrootsd::transport_publish::v5::Target::transport_kind: alloc::string::String +impl radroots_protocol::radrootsd::transport_publish::v5::Target +pub fn radroots_protocol::radrootsd::transport_publish::v5::Target::nostr(impl core::convert::Into<alloc::string::String>) -> Self +pub fn radroots_protocol::radrootsd::transport_publish::v5::Target::reticulum(radroots_protocol::radrootsd::transport_publish::v5::ReticulumBehavior) -> Self +pub fn radroots_protocol::radrootsd::transport_publish::v5::Target::with_label(self, impl core::convert::Into<alloc::string::String>) -> Self +pub fn radroots_protocol::radrootsd::transport_publish::v5::Target::with_scope(self, impl core::convert::Into<alloc::string::String>) -> Self +pub struct radroots_protocol::radrootsd::transport_publish::v5::TargetFingerprint(_) +impl radroots_protocol::radrootsd::transport_publish::v5::TargetFingerprint +pub fn radroots_protocol::radrootsd::transport_publish::v5::TargetFingerprint::as_str(&self) -> &str +pub fn radroots_protocol::radrootsd::transport_publish::v5::TargetFingerprint::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_protocol::radrootsd::transport_publish::v5::Error> +impl serde_core::ser::Serialize for radroots_protocol::radrootsd::transport_publish::v5::TargetFingerprint +pub fn radroots_protocol::radrootsd::transport_publish::v5::TargetFingerprint::serialize<S>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error> where S: serde_core::ser::Serializer +impl<'de> serde_core::de::Deserialize<'de> for radroots_protocol::radrootsd::transport_publish::v5::TargetFingerprint +pub fn radroots_protocol::radrootsd::transport_publish::v5::TargetFingerprint::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de> +pub struct radroots_protocol::radrootsd::transport_publish::v5::TargetOutcome +pub radroots_protocol::radrootsd::transport_publish::v5::TargetOutcome::attempted: bool +pub radroots_protocol::radrootsd::transport_publish::v5::TargetOutcome::endpoint_uri: alloc::string::String +pub radroots_protocol::radrootsd::transport_publish::v5::TargetOutcome::latency_ms: core::option::Option<u64> +pub radroots_protocol::radrootsd::transport_publish::v5::TargetOutcome::message: core::option::Option<alloc::string::String> +pub radroots_protocol::radrootsd::transport_publish::v5::TargetOutcome::outcome_kind: radroots_protocol::radrootsd::transport_publish::v5::OutcomeKind +pub radroots_protocol::radrootsd::transport_publish::v5::TargetOutcome::source: radroots_protocol::radrootsd::transport_publish::v5::TargetSource +pub radroots_protocol::radrootsd::transport_publish::v5::TargetOutcome::target_label: core::option::Option<alloc::string::String> +pub radroots_protocol::radrootsd::transport_publish::v5::TargetOutcome::target_scope: core::option::Option<alloc::string::String> +pub radroots_protocol::radrootsd::transport_publish::v5::TargetOutcome::transport_kind: alloc::string::String +pub struct radroots_protocol::radrootsd::transport_publish::v5::TransportCapability +pub radroots_protocol::radrootsd::transport_publish::v5::TransportCapability::availability: radroots_protocol::radrootsd::transport_publish::v5::CapabilityAvailability +pub radroots_protocol::radrootsd::transport_publish::v5::TransportCapability::capabilities: radroots_protocol::radrootsd::transport_publish::v5::OperationCapabilities +pub radroots_protocol::radrootsd::transport_publish::v5::TransportCapability::configured: bool +pub radroots_protocol::radrootsd::transport_publish::v5::TransportCapability::implementation: radroots_protocol::radrootsd::transport_publish::v5::Implementation +pub radroots_protocol::radrootsd::transport_publish::v5::TransportCapability::maturity: radroots_protocol::radrootsd::transport_publish::v5::CapabilityMaturity +pub radroots_protocol::radrootsd::transport_publish::v5::TransportCapability::message: alloc::string::String +pub radroots_protocol::radrootsd::transport_publish::v5::TransportCapability::reticulum_behavior: core::option::Option<radroots_protocol::radrootsd::transport_publish::v5::ReticulumBehavior> +pub radroots_protocol::radrootsd::transport_publish::v5::TransportCapability::transport: alloc::string::String +pub radroots_protocol::radrootsd::transport_publish::v5::TransportCapability::usable_for_delivery: bool +pub const radroots_protocol::radrootsd::transport_publish::v5::API_VERSION: &str +pub const radroots_protocol::radrootsd::transport_publish::v5::DAEMON_NAME: &str +pub const radroots_protocol::radrootsd::transport_publish::v5::METHOD_CAPABILITIES: &str +pub const radroots_protocol::radrootsd::transport_publish::v5::METHOD_EVENT: &str +pub const radroots_protocol::radrootsd::transport_publish::v5::METHOD_JOB_GET: &str +pub const radroots_protocol::radrootsd::transport_publish::v5::METHOD_JOB_LIST: &str +pub const radroots_protocol::radrootsd::transport_publish::v5::RETICULUM_ENDPOINT_URI: &str +pub const radroots_protocol::radrootsd::transport_publish::v5::RETICULUM_UNAVAILABLE_MESSAGE: &str +pub fn radroots_protocol::radrootsd::transport_publish::v5::schema_registry() -> core::result::Result<radroots_protocol::schema::Registry, radroots_protocol::schema::Error> +pub mod radroots_protocol::runtime +pub mod radroots_protocol::runtime::v1 +pub enum radroots_protocol::runtime::v1::ApprovalRequirement +pub radroots_protocol::runtime::v1::ApprovalRequirement::ConditionalOrRequiredByMode +pub radroots_protocol::runtime::v1::ApprovalRequirement::None +pub radroots_protocol::runtime::v1::ApprovalRequirement::Required +pub enum radroots_protocol::runtime::v1::DeadlinePolicy +pub radroots_protocol::runtime::v1::DeadlinePolicy::DefaultBounded +pub radroots_protocol::runtime::v1::DeadlinePolicy::OperationDeclared +pub enum radroots_protocol::runtime::v1::DryRunSupport +pub radroots_protocol::runtime::v1::DryRunSupport::NotApplicable +pub radroots_protocol::runtime::v1::DryRunSupport::PureLocalPlan +#[non_exhaustive] pub enum radroots_protocol::runtime::v1::Error +pub radroots_protocol::runtime::v1::Error::CatalogInvalid +pub radroots_protocol::runtime::v1::Error::CatalogInvalid::message: alloc::string::String +pub radroots_protocol::runtime::v1::Error::DuplicateOperationId +pub radroots_protocol::runtime::v1::Error::DuplicateOperationId::operation_id: radroots_protocol::runtime::v1::OperationId +pub radroots_protocol::runtime::v1::Error::MissingRequiredOperation +pub radroots_protocol::runtime::v1::Error::MissingRequiredOperation::operation_id: radroots_protocol::runtime::v1::OperationId +pub radroots_protocol::runtime::v1::Error::UnknownOperationId +pub radroots_protocol::runtime::v1::Error::UnknownOperationId::operation_id: alloc::string::String +pub radroots_protocol::runtime::v1::Error::UnsupportedOperationSchemaVersion +pub radroots_protocol::runtime::v1::Error::UnsupportedOperationSchemaVersion::operation_id: radroots_protocol::runtime::v1::OperationId +pub radroots_protocol::runtime::v1::Error::UnsupportedOperationSchemaVersion::version: u16 +impl core::error::Error for radroots_protocol::runtime::v1::Error +impl core::fmt::Display for radroots_protocol::runtime::v1::Error +pub fn radroots_protocol::runtime::v1::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub enum radroots_protocol::runtime::v1::IdempotencyPolicy +pub radroots_protocol::runtime::v1::IdempotencyPolicy::Forbidden +pub radroots_protocol::runtime::v1::IdempotencyPolicy::RequiredUuidV7 +pub enum radroots_protocol::runtime::v1::Mutability +pub radroots_protocol::runtime::v1::Mutability::Mutation +pub radroots_protocol::runtime::v1::Mutability::Read +pub enum radroots_protocol::runtime::v1::OperationId +pub radroots_protocol::runtime::v1::OperationId::AccountCreate +pub radroots_protocol::runtime::v1::OperationId::AccountImport +pub radroots_protocol::runtime::v1::OperationId::AccountList +pub radroots_protocol::runtime::v1::OperationId::AccountRemove +pub radroots_protocol::runtime::v1::OperationId::AccountSelect +pub radroots_protocol::runtime::v1::OperationId::BasketCreate +pub radroots_protocol::runtime::v1::OperationId::BasketGet +pub radroots_protocol::runtime::v1::OperationId::BasketItemAdd +pub radroots_protocol::runtime::v1::OperationId::BasketItemRemove +pub radroots_protocol::runtime::v1::OperationId::BasketItemUpdate +pub radroots_protocol::runtime::v1::OperationId::BasketList +pub radroots_protocol::runtime::v1::OperationId::BasketQuote +pub radroots_protocol::runtime::v1::OperationId::DiagnosticsInspect +pub radroots_protocol::runtime::v1::OperationId::FarmCreate +pub radroots_protocol::runtime::v1::OperationId::FarmGet +pub radroots_protocol::runtime::v1::OperationId::FarmList +pub radroots_protocol::runtime::v1::OperationId::FarmPublish +pub radroots_protocol::runtime::v1::OperationId::FarmUpdate +pub radroots_protocol::runtime::v1::OperationId::HealthInspect +pub radroots_protocol::runtime::v1::OperationId::ListingCreate +pub radroots_protocol::runtime::v1::OperationId::ListingGet +pub radroots_protocol::runtime::v1::OperationId::ListingList +pub radroots_protocol::runtime::v1::OperationId::ListingPause +pub radroots_protocol::runtime::v1::OperationId::ListingPublish +pub radroots_protocol::runtime::v1::OperationId::ListingUpdate +pub radroots_protocol::runtime::v1::OperationId::ListingWithdraw +pub radroots_protocol::runtime::v1::OperationId::MarketGet +pub radroots_protocol::runtime::v1::OperationId::MarketPull +pub radroots_protocol::runtime::v1::OperationId::MarketSearch +pub radroots_protocol::runtime::v1::OperationId::ProfileInspect +pub radroots_protocol::runtime::v1::OperationId::ProfileReset +pub radroots_protocol::runtime::v1::OperationId::SignerStatus +pub radroots_protocol::runtime::v1::OperationId::StoreBackup +pub radroots_protocol::runtime::v1::OperationId::StoreInspect +pub radroots_protocol::runtime::v1::OperationId::StoreRestore +pub radroots_protocol::runtime::v1::OperationId::SyncPull +pub radroots_protocol::runtime::v1::OperationId::SyncPush +pub radroots_protocol::runtime::v1::OperationId::SyncStatus +pub radroots_protocol::runtime::v1::OperationId::TradeCancellationSubmit +pub radroots_protocol::runtime::v1::OperationId::TradeCandidateDecide +pub radroots_protocol::runtime::v1::OperationId::TradeEvidenceInspect +pub radroots_protocol::runtime::v1::OperationId::TradeEvidenceRefresh +pub radroots_protocol::runtime::v1::OperationId::TradeGet +pub radroots_protocol::runtime::v1::OperationId::TradeList +pub radroots_protocol::runtime::v1::OperationId::TradeOperationResume +pub radroots_protocol::runtime::v1::OperationId::TradePrivateArtifactDelete +pub radroots_protocol::runtime::v1::OperationId::TradePrivateArtifactOpen +pub radroots_protocol::runtime::v1::OperationId::TradePrivateArtifactSeal +pub radroots_protocol::runtime::v1::OperationId::TradeProposalSubmit +pub radroots_protocol::runtime::v1::OperationId::TradeRevisionPropose +pub radroots_protocol::runtime::v1::OperationId::TransportCapabilityList +pub radroots_protocol::runtime::v1::OperationId::TransportConfigInspect +pub radroots_protocol::runtime::v1::OperationId::TransportConfigUpdate +pub radroots_protocol::runtime::v1::OperationId::TransportDeliveryInspect +pub radroots_protocol::runtime::v1::OperationId::TransportDeliveryRetry +pub radroots_protocol::runtime::v1::OperationId::TransportStatusInspect +pub radroots_protocol::runtime::v1::OperationId::ValidationStatus +impl radroots_protocol::runtime::v1::OperationId +pub fn radroots_protocol::runtime::v1::OperationId::as_str(self) -> &'static str +pub fn radroots_protocol::runtime::v1::OperationId::parse(&str) -> core::result::Result<Self, radroots_protocol::runtime::v1::Error> +pub fn radroots_protocol::runtime::v1::OperationId::receipt_schema_id(self) -> &'static str +pub fn radroots_protocol::runtime::v1::OperationId::request_schema_id(self) -> &'static str +impl serde_core::ser::Serialize for radroots_protocol::runtime::v1::OperationId +pub fn radroots_protocol::runtime::v1::OperationId::serialize<S>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error> where S: serde_core::ser::Serializer +impl<'de> serde_core::de::Deserialize<'de> for radroots_protocol::runtime::v1::OperationId +pub fn radroots_protocol::runtime::v1::OperationId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de> +pub enum radroots_protocol::runtime::v1::PrivacyEffect +pub radroots_protocol::runtime::v1::PrivacyEffect::BackupRestore +pub radroots_protocol::runtime::v1::PrivacyEffect::None +pub radroots_protocol::runtime::v1::PrivacyEffect::PrivateCoordination +pub radroots_protocol::runtime::v1::PrivacyEffect::PrivateStore +pub radroots_protocol::runtime::v1::PrivacyEffect::PublicEvent +pub enum radroots_protocol::runtime::v1::ProjectionEffect +pub radroots_protocol::runtime::v1::ProjectionEffect::MayUpdateProjection +pub radroots_protocol::runtime::v1::ProjectionEffect::None +pub radroots_protocol::runtime::v1::ProjectionEffect::ReadsProjection +pub radroots_protocol::runtime::v1::ProjectionEffect::WritesProjection +pub enum radroots_protocol::runtime::v1::Risk +pub radroots_protocol::runtime::v1::Risk::Critical +pub radroots_protocol::runtime::v1::Risk::High +pub radroots_protocol::runtime::v1::Risk::Low +pub radroots_protocol::runtime::v1::Risk::Medium +pub enum radroots_protocol::runtime::v1::SignerRequirement +pub radroots_protocol::runtime::v1::SignerRequirement::ConditionalRelayAuth +pub radroots_protocol::runtime::v1::SignerRequirement::None +pub radroots_protocol::runtime::v1::SignerRequirement::Required +pub struct radroots_protocol::runtime::v1::OperationDescriptor +pub radroots_protocol::runtime::v1::OperationDescriptor::approval: radroots_protocol::runtime::v1::ApprovalRequirement +pub radroots_protocol::runtime::v1::OperationDescriptor::deadline: radroots_protocol::runtime::v1::DeadlinePolicy +pub radroots_protocol::runtime::v1::OperationDescriptor::dry_run: radroots_protocol::runtime::v1::DryRunSupport +pub radroots_protocol::runtime::v1::OperationDescriptor::idempotency: radroots_protocol::runtime::v1::IdempotencyPolicy +pub radroots_protocol::runtime::v1::OperationDescriptor::maturity: radroots_protocol::capability::v1::Maturity +pub radroots_protocol::runtime::v1::OperationDescriptor::mutability: radroots_protocol::runtime::v1::Mutability +pub radroots_protocol::runtime::v1::OperationDescriptor::operation_id: radroots_protocol::runtime::v1::OperationId +pub radroots_protocol::runtime::v1::OperationDescriptor::privacy: radroots_protocol::runtime::v1::PrivacyEffect +pub radroots_protocol::runtime::v1::OperationDescriptor::projection: radroots_protocol::runtime::v1::ProjectionEffect +pub radroots_protocol::runtime::v1::OperationDescriptor::risk: radroots_protocol::runtime::v1::Risk +pub radroots_protocol::runtime::v1::OperationDescriptor::schema_version: u16 +pub radroots_protocol::runtime::v1::OperationDescriptor::signer: radroots_protocol::runtime::v1::SignerRequirement +pub radroots_protocol::runtime::v1::OperationDescriptor::transport_capability: radroots_protocol::runtime::v1::TransportRoute +impl radroots_protocol::runtime::v1::OperationDescriptor +pub fn radroots_protocol::runtime::v1::OperationDescriptor::receipt_schema_id(self) -> &'static str +pub fn radroots_protocol::runtime::v1::OperationDescriptor::request_schema_id(self) -> &'static str +pub struct radroots_protocol::runtime::v1::TransportRoute +pub radroots_protocol::runtime::v1::TransportRoute::deliver: bool +pub radroots_protocol::runtime::v1::TransportRoute::diagnostics: bool +pub radroots_protocol::runtime::v1::TransportRoute::fetch: bool +pub radroots_protocol::runtime::v1::TransportRoute::local: bool +pub radroots_protocol::runtime::v1::TransportRoute::nostr: bool +pub radroots_protocol::runtime::v1::TransportRoute::reticulum: bool +pub radroots_protocol::runtime::v1::TransportRoute::synchronize: bool +impl radroots_protocol::runtime::v1::TransportRoute +pub const fn radroots_protocol::runtime::v1::TransportRoute::delivery() -> Self +pub const fn radroots_protocol::runtime::v1::TransportRoute::diagnostics() -> Self +pub const fn radroots_protocol::runtime::v1::TransportRoute::fetch() -> Self +pub fn radroots_protocol::runtime::v1::TransportRoute::includes_transport(self, radroots_protocol::capability::v1::TransportKind) -> bool +pub const fn radroots_protocol::runtime::v1::TransportRoute::local() -> Self +pub const fn radroots_protocol::runtime::v1::TransportRoute::none() -> Self +pub const radroots_protocol::runtime::v1::CATALOG: &[radroots_protocol::runtime::v1::OperationDescriptor] +pub const radroots_protocol::runtime::v1::OPERATION_SCHEMA_VERSION: u16 +pub fn radroots_protocol::runtime::v1::operation_descriptor(radroots_protocol::runtime::v1::OperationId) -> core::result::Result<radroots_protocol::runtime::v1::OperationDescriptor, radroots_protocol::runtime::v1::Error> +pub fn radroots_protocol::runtime::v1::schema_registry() -> core::result::Result<radroots_protocol::schema::Registry, radroots_protocol::schema::Error> +pub fn radroots_protocol::runtime::v1::validate_catalog(&[radroots_protocol::runtime::v1::OperationDescriptor]) -> core::result::Result<(), radroots_protocol::runtime::v1::Error> +pub mod radroots_protocol::schema +#[non_exhaustive] pub enum radroots_protocol::schema::Error +pub radroots_protocol::schema::Error::DuplicateSchemaId +pub radroots_protocol::schema::Error::DuplicateSchemaId::schema_id: alloc::string::String +pub radroots_protocol::schema::Error::EmptySchemaId +pub radroots_protocol::schema::Error::InvalidSchemaNamespaceSegment +pub radroots_protocol::schema::Error::InvalidSchemaNamespaceSegment::index: usize +pub radroots_protocol::schema::Error::InvalidSchemaVersion +pub radroots_protocol::schema::Error::MissingSchemaNamespace +pub radroots_protocol::schema::Error::SchemaIdTooLong +pub radroots_protocol::schema::Error::SchemaIdTooLong::actual: usize +pub radroots_protocol::schema::Error::SchemaIdTooLong::max: usize +pub radroots_protocol::schema::Error::SchemaVersionMismatch +pub radroots_protocol::schema::Error::SchemaVersionMismatch::declared: u16 +pub radroots_protocol::schema::Error::SchemaVersionMismatch::encoded: u16 +pub radroots_protocol::schema::Error::SchemaVersionMismatch::schema_id: alloc::string::String +impl core::error::Error for radroots_protocol::schema::Error +impl core::fmt::Display for radroots_protocol::schema::Error +pub fn radroots_protocol::schema::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result +#[non_exhaustive] pub enum radroots_protocol::schema::ModuleVersion +pub radroots_protocol::schema::ModuleVersion::CapabilityV1 +pub radroots_protocol::schema::ModuleVersion::ErrorV1 +pub radroots_protocol::schema::ModuleVersion::EventV1 +pub radroots_protocol::schema::ModuleVersion::RadrootsdTransportPublishV5 +pub radroots_protocol::schema::ModuleVersion::RuntimeV1 +impl radroots_protocol::schema::ModuleVersion +pub const radroots_protocol::schema::ModuleVersion::ALL: [Self; 5] +pub const fn radroots_protocol::schema::ModuleVersion::generation(self) -> u16 +pub const fn radroots_protocol::schema::ModuleVersion::path(self) -> &'static str +pub struct radroots_protocol::schema::Descriptor +impl radroots_protocol::schema::Descriptor +pub const fn radroots_protocol::schema::Descriptor::id(&self) -> &radroots_protocol::schema::SchemaId +pub const fn radroots_protocol::schema::Descriptor::module(&self) -> radroots_protocol::schema::ModuleVersion +pub fn radroots_protocol::schema::Descriptor::try_new(impl core::convert::Into<alloc::string::String>, radroots_protocol::schema::ModuleVersion) -> core::result::Result<Self, radroots_protocol::schema::Error> +pub struct radroots_protocol::schema::Metadata +pub radroots_protocol::schema::Metadata::schema_id: &'static str +pub radroots_protocol::schema::Metadata::schema_version: u16 +pub radroots_protocol::schema::Metadata::type_name: &'static str +pub struct radroots_protocol::schema::Registry +impl radroots_protocol::schema::Registry +pub fn radroots_protocol::schema::Registry::descriptor(&self, &radroots_protocol::schema::SchemaId) -> core::option::Option<&radroots_protocol::schema::Descriptor> +pub fn radroots_protocol::schema::Registry::descriptors(&self) -> &[radroots_protocol::schema::Descriptor] +pub fn radroots_protocol::schema::Registry::is_empty(&self) -> bool +pub fn radroots_protocol::schema::Registry::len(&self) -> usize +pub fn radroots_protocol::schema::Registry::module_for(&self, &radroots_protocol::schema::SchemaId) -> core::option::Option<radroots_protocol::schema::ModuleVersion> +pub fn radroots_protocol::schema::Registry::try_from_metadata(impl core::iter::traits::collect::IntoIterator<Item = (radroots_protocol::schema::Metadata, radroots_protocol::schema::ModuleVersion)>) -> core::result::Result<Self, radroots_protocol::schema::Error> +pub fn radroots_protocol::schema::Registry::try_new(impl core::iter::traits::collect::IntoIterator<Item = radroots_protocol::schema::Descriptor>) -> core::result::Result<Self, radroots_protocol::schema::Error> +pub struct radroots_protocol::schema::SchemaId +impl radroots_protocol::schema::SchemaId +pub fn radroots_protocol::schema::SchemaId::as_str(&self) -> &str +pub fn radroots_protocol::schema::SchemaId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_protocol::schema::Error> +pub const fn radroots_protocol::schema::SchemaId::version(&self) -> u16 +impl core::convert::AsRef<str> for radroots_protocol::schema::SchemaId +pub fn radroots_protocol::schema::SchemaId::as_ref(&self) -> &str +impl core::convert::TryFrom<&str> for radroots_protocol::schema::SchemaId +pub type radroots_protocol::schema::SchemaId::Error = radroots_protocol::schema::Error +pub fn radroots_protocol::schema::SchemaId::try_from(&str) -> core::result::Result<Self, Self::Error> +impl core::convert::TryFrom<alloc::string::String> for radroots_protocol::schema::SchemaId +pub type radroots_protocol::schema::SchemaId::Error = radroots_protocol::schema::Error +pub fn radroots_protocol::schema::SchemaId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error> +impl core::fmt::Display for radroots_protocol::schema::SchemaId +pub fn radroots_protocol::schema::SchemaId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::str::traits::FromStr for radroots_protocol::schema::SchemaId +pub type radroots_protocol::schema::SchemaId::Err = radroots_protocol::schema::Error +pub fn radroots_protocol::schema::SchemaId::from_str(&str) -> core::result::Result<Self, Self::Err> +pub const radroots_protocol::schema::MAX_SCHEMA_ID_BYTES: usize +pub fn radroots_protocol::schema::protocol_v1_registry() -> core::result::Result<radroots_protocol::schema::Registry, radroots_protocol::schema::Error>