commit 9155c116ec80bc532bff4e9faa752613d9776343
parent 3fcace7e84036a9d247e95991a029bc078ab5a2a
Author: triesap <tyson@radroots.org>
Date: Sun, 9 Aug 2026 05:38:12 +0000
contracts: relocate standalone documentation authority
Diffstat:
67 files changed, 14412 insertions(+), 292 deletions(-)
diff --git a/AGENTS.md b/AGENTS.md
@@ -14,24 +14,32 @@ This file exists for compatibility with tools that look for AGENTS.md.
## 2. Source of intent
-- Read `docs/specs/README.md` and
- `docs/specs/radroots_crates_release_v1.md` before changing a public package,
- package identity, dependency, feature, or release control.
-- The Markdown specification is normative. Its TOML catalog is the executable
- package and dependency representation; the CSV and DOT files are review
- aids.
+- Read `contracts/crates/release.v2.toml`,
+ `contracts/crates/release_v1/radroots_crates_release_v1.toml`, and
+ `contracts/crates/catalog.v2.toml` before changing a public package, package
+ identity, dependency, feature, or release control.
+- Machine contracts under `contracts/**` are the standalone authority. Human
+ specifications, decisions, runbooks, and qualification evidence belong
+ under the parent monorepo's `docs/oss/lib/**` authority and must never become
+ a standalone build, test, package, or release input.
- Current source and tests are implementation evidence. They do not silently
override `radroots.crates.release.v1`.
- Record any evidence-based plan deviation in
- `docs/implementation/deviations.toml`, following
- `docs/implementation/DEVIATIONS.md`, before proceeding. Validate it with
- `cargo xtask architecture`.
+ `contracts/architecture/deviations.toml` before proceeding. Validate it with
+ `cargo xtask architecture`; a normative architecture exception also requires
+ the applicable machine decision under `contracts/architecture/decisions/**`.
+ Deviation anchors must resolve the Release V1 TOML through a validated
+ selector: `repositories.<name>`, `repository_policy`, `release_policy`,
+ `quality_policy.coverage`, or `package.<name>`.
## 3. Repository operating model
- This is a public open-source library workspace; optimize for durable library design, portability, determinism, and explicit contracts.
- Keep release and validation automation forge-agnostic; repo-owned xtask commands, Nix apps, tags, and contract metadata are canonical, while committed provider-specific workflow automation is not.
-- `.github/**` and capsule-local CI workflows are forbidden. Any required monorepo orchestration belongs exclusively to the parent repository's root `.act/**` authority and must not be copied into this standalone capsule.
+- Do not add or retain tracked `docs/**`, `.github/**`, or `.act/**` content.
+ Keep validation forge-agnostic. Any required monorepo orchestration belongs
+ exclusively to the parent repository's root `.act/**` authority and must not
+ be copied into this standalone capsule.
- Prefer clean target-state changes over compatibility scaffolding unless compatibility is explicitly required.
- Stay within the requested scope and the smallest coherent file set.
- Do not fold unrelated cleanup, speculative refactors, or roadmap work into the same change.
@@ -59,6 +67,9 @@ Before editing code:
- `nix run .#release-preflight`
- `cargo xtask architecture` for controlled deviation records and local spec
anchors
+- Public API baselines live in `contracts/api_baselines/**`. Regenerate one
+ with `cargo-public-api` `0.52.0` and rustdoc JSON from
+ `nightly-2026-07-16`, writing the reviewed output back to that directory.
- targeted `cargo check -p <crate>` and `cargo test -p <crate>` only inside the Nix shell
- `cargo xtask dto-roots --write` after changing configured DTO exports and
`cargo xtask dto-roots --check` for exact generated-root freshness
@@ -114,7 +125,8 @@ Before editing code:
feature closures.
- During the migration, every package remains non-publishable until its
package-realistic release gates pass and publication is explicitly
- authorized. Follow `docs/implementation/PUBLICATION_FREEZE.md`.
+ authorized. `contracts/releases/publish_policy.toml` is the machine
+ authority; validation metadata does not authorize upload.
## 8. Service hardening boundaries
@@ -156,9 +168,9 @@ trusted-publisher configuration without explicit authorization.
- Split unrelated changes into separate commits.
- If repository evidence proves a planned step obsolete or unsafe, record the
evidence, affected specification anchor, disposition, and validation in
- `docs/implementation/deviations.toml`, following
- `docs/implementation/DEVIATIONS.md`. A normative architecture change also
- requires an approved decision record. Never silently skip or reorder work.
+ `contracts/architecture/deviations.toml`. A normative architecture change
+ also requires an approved machine decision under
+ `contracts/architecture/decisions/**`. Never silently skip or reorder work.
## 11. Definition of done
diff --git a/AGENT_INSTRUCTIONS.md b/AGENT_INSTRUCTIONS.md
@@ -66,10 +66,14 @@ Use this mental model:
- keep domain logic inside the correct crate rather than spreading it across the workspace
- `contracts/`
- core-library contract metadata, release-candidate policy, coverage governance, and public conformance assets
+- `contracts/api_baselines/`
+ - reviewed generated public Rust API surfaces
+- `contracts/architecture/`
+ - machine-readable deviations, decisions, and compatibility-retirement authority
+- `contracts/crates/release_v1/`
+ - historical machine catalog, inventory, graph, and checksums retained by release V2
- `contracts/conformance/`
- cross-language and cross-surface vector expectations
-- `docs/`
- - durable workflow and environment documentation
- `build/nix/`, `flake.nix`, `treefmt.nix`
- canonical environment and CI contract
- `tools/xtask/`
@@ -77,6 +81,17 @@ Use this mental model:
Do not duplicate contract knowledge between crates when `contracts/`, `contracts/conformance/`, or `tools/xtask` already owns it.
+Do not add or retain tracked `docs/**`, `.github/**`, or `.act/**`. Root
+`README.md`, `AGENTS.md`, `AGENT_INSTRUCTIONS.md`, conventional public project
+files, package READMEs, and Rustdoc carry concise standalone guidance. Extended
+human authority is parent-owned and is never a standalone command input.
+
+Deviation `spec_anchors` target the Release V1 TOML and must use one of the
+machine selectors enforced by `cargo xtask architecture`:
+`repositories.<name>`, `repository_policy`, `release_policy`,
+`quality_policy.coverage`, or `package.<name>`. Markdown heading fragments and
+unresolved free-form fragments are invalid.
+
## 5. Rust engineering standards
### Core design
@@ -158,6 +173,23 @@ When a change affects exported models, transforms, identifiers, or public runtim
Do not change public behavior in Rust and leave contract or conformance assets stale.
+Public API baselines are generated with `cargo-public-api` `0.52.0` and
+rustdoc JSON from `nightly-2026-07-16`; the workspace's pinned stable toolchain
+still governs package verification. From the canonical development shell,
+regenerate one package with:
+
+```sh
+RUSTC="$(rustup which --toolchain nightly-2026-07-16 rustc)" \
+RUSTDOC="$(rustup which --toolchain nightly-2026-07-16 rustdoc)" \
+cargo public-api --manifest-path crates/<crate>/Cargo.toml \
+ --all-features -sss \
+ > contracts/api_baselines/<package>.txt
+```
+
+Review each baseline change with the package's machine charter and intended
+SemVer impact. Generated listings are evidence of the Rust surface, not
+authority to expand it.
+
## 7. Canonical validation strategy
Use the smallest authoritative lane that proves the change green.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
@@ -4,9 +4,10 @@ Radroots core-library changes are contract-driven and independently
reviewable. Before editing, read these files in order:
1. `AGENTS.md`
-2. `docs/specs/README.md`
-3. `docs/specs/radroots_crates_release_v1.md` for crate-surface work
-4. `AGENT_INSTRUCTIONS.md`
+2. `AGENT_INSTRUCTIONS.md`
+3. `contracts/crates/release.v2.toml`
+4. `contracts/crates/release_v1/radroots_crates_release_v1.toml` for
+ crate-surface work
5. the affected manifests, implementation, contracts, and tests
The release-v1 architecture identifier is `radroots.crates.release.v1`. This
@@ -42,10 +43,11 @@ Keep commits focused and keep public commit language independent of any
private checkout. Do not publish, tag, merge, or change registry ownership
without explicit authorization.
-When current evidence proves a planned step obsolete or unsafe, follow
-`docs/implementation/DEVIATIONS.md` and validate the machine-readable ledger
-with `cargo xtask architecture`. Complete
-`docs/implementation/STEP_REPORT_TEMPLATE.md`, and keep
-`docs/implementation/TRACEABILITY.md` aligned with durable requirements.
-Record the evidence and affected spec anchor before changing the plan; do not
-silently redefine the architecture.
+When current evidence proves a planned step obsolete or unsafe, update
+`contracts/architecture/deviations.toml` and validate it with
+`cargo xtask architecture`. Record the evidence and affected machine-contract
+anchor before changing the plan. Anchors must use a validated Release V1 TOML
+selector (`repositories.<name>`, `repository_policy`, `release_policy`,
+`quality_policy.coverage`, or `package.<name>`); Markdown heading fragments are
+not machine anchors. A normative change also requires the applicable machine
+decision. Do not silently redefine the architecture.
diff --git a/build/nix/common.nix b/build/nix/common.nix
@@ -42,10 +42,6 @@ let
../../rust-toolchain.toml
../../contracts
../../crates
- ../../docs/api
- ../../docs/decisions
- ../../docs/implementation
- ../../docs/specs
../../fuzz
../../tools
]
diff --git a/contracts/api_baselines/radroots.txt b/contracts/api_baselines/radroots.txt
@@ -0,0 +1,131 @@
+pub mod radroots
+pub use radroots::Client
+pub use radroots::ClientBuilder
+pub use radroots::Error
+pub use radroots::Result
+pub mod radroots::client
+pub const fn radroots::client::geonames_enabled() -> bool
+pub const fn radroots::client::knowledge_enabled() -> bool
+pub const fn radroots::client::local_only() -> radroots_sdk::transport::Profile
+pub fn radroots::client::memory() -> radroots_sdk::client::ClientBuilder
+pub async fn radroots::client::native(radroots_sdk::storage::SqliteOptions) -> radroots_sdk::error::Result<radroots_sdk::client::ClientBuilder>
+pub fn radroots::client::with_nip46_signer(radroots_sdk::client::ClientBuilder, radroots_sdk::signing::Provider) -> radroots_sdk::client::ClientBuilder
+pub fn radroots::client::with_transport(radroots_sdk::client::ClientBuilder, alloc::sync::Arc<dyn radroots_transport::source::EventSource>, alloc::sync::Arc<dyn radroots_transport::sink::EventSink>) -> radroots_sdk::client::ClientBuilder
+pub mod radroots::event
+pub use radroots::event::Error
+pub use radroots::event::Event
+pub use radroots::event::EventId
+pub use radroots::event::EventKind
+pub use radroots::event::EventTag
+pub use radroots::event::GenericEventDraft
+pub use radroots::event::SignedEvent
+pub use radroots::event::VerifiedEvent
+pub mod radroots::farm
+pub use radroots::farm::Farm
+pub use radroots::farm::FarmPublicLocation
+pub use radroots::farm::FarmRef
+pub use radroots::farm::Plan
+pub use radroots::farm::PrepareError
+pub use radroots::farm::PrepareErrorKind
+pub use radroots::farm::PrepareRequest
+pub use radroots::farm::prepare
+pub mod radroots::identity
+pub use radroots::identity::AccountId
+pub use radroots::identity::Error
+pub use radroots::identity::IdentityId
+pub use radroots::identity::Profile
+pub use radroots::identity::PublicIdentity
+pub use radroots::identity::PublicKey
+pub use radroots::identity::Username
+pub mod radroots::knowledge
+pub use radroots::knowledge::AddressableRef
+pub use radroots::knowledge::KnowledgeClaim
+pub use radroots::knowledge::KnowledgeFieldReport
+pub use radroots::knowledge::KnowledgeRelation
+pub use radroots::knowledge::KnowledgeReview
+pub use radroots::knowledge::KnowledgeSource
+pub use radroots::knowledge::KnowledgeValidationError
+pub use radroots::knowledge::WikiArticle
+pub use radroots::knowledge::WikiDTagError
+pub use radroots::knowledge::WikiMergeRequest
+pub use radroots::knowledge::WikiRedirect
+pub use radroots::knowledge::normalize_wiki_d_tag
+pub use radroots::knowledge::validate_wiki_d_tag
+pub mod radroots::listing
+pub use radroots::listing::Action
+pub use radroots::listing::EditV1
+pub use radroots::listing::Lifecycle
+pub use radroots::listing::OperationalListing
+pub use radroots::listing::OperationalListingAvailability
+pub use radroots::listing::OperationalListingBin
+pub use radroots::listing::OperationalListingDeliveryMethod
+pub use radroots::listing::OperationalListingImage
+pub use radroots::listing::OperationalListingProduct
+pub use radroots::listing::OperationalListingPublicLocation
+pub use radroots::listing::OperationalListingStatus
+pub use radroots::listing::Plan
+pub use radroots::listing::PrepareError
+pub use radroots::listing::PrepareErrorKind
+pub use radroots::listing::PrepareRequest
+pub use radroots::listing::prepare
+pub mod radroots::signing
+pub use radroots::signing::AuthorizationHeader
+pub use radroots::signing::BlossomAuthorizationPlan
+pub use radroots::signing::BlossomSigningError
+pub use radroots::signing::Mode
+pub use radroots::signing::Operations
+pub use radroots::signing::Provider
+pub use radroots::signing::blossom_upload_request
+pub mod radroots::storage
+pub use radroots::storage::IntegrityStatus
+pub use radroots::storage::Operations
+pub use radroots::storage::SqliteOpenMode
+pub use radroots::storage::SqliteOptions
+pub use radroots::storage::SqlitePaths
+pub use radroots::storage::Status
+pub mod radroots::sync
+pub mod radroots::trade
+pub use radroots::trade::Currency
+pub use radroots::trade::Decimal
+pub use radroots::trade::FulfillmentProfileV1
+pub use radroots::trade::Money
+pub use radroots::trade::MutationBodyV1
+pub use radroots::trade::MutationKindV1
+pub use radroots::trade::MutationV1
+pub use radroots::trade::Percent
+pub use radroots::trade::Plan
+pub use radroots::trade::PrepareError
+pub use radroots::trade::PrepareErrorKind
+pub use radroots::trade::PrepareRequest
+pub use radroots::trade::Projection
+pub use radroots::trade::Quantity
+pub use radroots::trade::QuantityPrice
+pub use radroots::trade::ReducerIssue
+pub use radroots::trade::ReductionInput
+pub use radroots::trade::TradeCancellationProfileV1
+pub use radroots::trade::TradeCandidateLineV1
+pub use radroots::trade::TradeCandidateTermsV1
+pub use radroots::trade::TradeDecisionV1
+pub use radroots::trade::TradeEconomicAdjustmentV1
+pub use radroots::trade::TradeEconomicsProfileV1
+pub use radroots::trade::TradePrivateTermsRefV1
+pub use radroots::trade::Unit
+pub use radroots::trade::ValidationError
+pub use radroots::trade::WorkflowPlan
+pub use radroots::trade::prepare
+pub use radroots::trade::project
+pub mod radroots::transport
+pub use radroots::transport::DaemonAuth
+pub use radroots::transport::DaemonConfig
+pub use radroots::transport::DaemonDelivery
+pub use radroots::transport::DaemonError
+pub use radroots::transport::Error
+pub use radroots::transport::EventSink
+pub use radroots::transport::EventSource
+pub use radroots::transport::Profile
+pub use radroots::transport::SatisfactionClass
+pub use radroots::transport::SatisfactionPolicy
+pub use radroots::transport::Target
+pub use radroots::transport::TargetPolicy
+pub use radroots::transport::TargetSet
+pub use radroots::transport::TransportId
diff --git a/contracts/api_baselines/radroots_blossom.txt b/contracts/api_baselines/radroots_blossom.txt
@@ -0,0 +1,348 @@
+pub mod radroots_blossom
+pub mod radroots_blossom::authorization
+pub enum radroots_blossom::authorization::AuthorizationAction
+pub radroots_blossom::authorization::AuthorizationAction::Delete
+pub radroots_blossom::authorization::AuthorizationAction::Get
+pub radroots_blossom::authorization::AuthorizationAction::List
+pub radroots_blossom::authorization::AuthorizationAction::Media
+pub radroots_blossom::authorization::AuthorizationAction::Upload
+impl radroots_blossom::authorization::AuthorizationAction
+pub const fn radroots_blossom::authorization::AuthorizationAction::as_str(self) -> &'static str
+pub fn radroots_blossom::authorization::AuthorizationAction::parse(&str) -> core::result::Result<Self, radroots_blossom::Error>
+impl core::fmt::Display for radroots_blossom::authorization::AuthorizationAction
+pub fn radroots_blossom::authorization::AuthorizationAction::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_blossom::authorization::AuthorizationAction
+pub type radroots_blossom::authorization::AuthorizationAction::Err = radroots_blossom::Error
+pub fn radroots_blossom::authorization::AuthorizationAction::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub enum radroots_blossom::authorization::AuthorizationTarget
+pub radroots_blossom::authorization::AuthorizationTarget::DeleteBlob(radroots_blossom::hash::Sha256)
+pub radroots_blossom::authorization::AuthorizationTarget::GetBlob(radroots_blossom::hash::Sha256)
+pub radroots_blossom::authorization::AuthorizationTarget::List
+pub radroots_blossom::authorization::AuthorizationTarget::Media(radroots_blossom::hash::Sha256)
+pub radroots_blossom::authorization::AuthorizationTarget::Mirror(radroots_blossom::hash::Sha256)
+pub radroots_blossom::authorization::AuthorizationTarget::Upload(radroots_blossom::hash::Sha256)
+impl radroots_blossom::authorization::AuthorizationTarget
+pub const fn radroots_blossom::authorization::AuthorizationTarget::action(self) -> radroots_blossom::authorization::AuthorizationAction
+pub const fn radroots_blossom::authorization::AuthorizationTarget::implied_hash(self) -> core::option::Option<radroots_blossom::hash::Sha256>
+pub enum radroots_blossom::authorization::ServerScopeRequirement
+pub radroots_blossom::authorization::ServerScopeRequirement::OptionalAnyMatch
+pub radroots_blossom::authorization::ServerScopeRequirement::RequiredAnyMatch
+pub struct radroots_blossom::authorization::AuthoredUploadClaim
+impl radroots_blossom::authorization::AuthoredUploadClaim
+pub fn radroots_blossom::authorization::AuthoredUploadClaim::content(&self) -> &radroots_blossom::authorization::AuthorizationContent
+pub const fn radroots_blossom::authorization::AuthoredUploadClaim::created_at(&self) -> u64
+pub const fn radroots_blossom::authorization::AuthoredUploadClaim::expiration(&self) -> u64
+pub fn radroots_blossom::authorization::AuthoredUploadClaim::into_wire_parts(self) -> radroots_blossom::authorization::AuthorizationWireParts
+pub const fn radroots_blossom::authorization::AuthoredUploadClaim::lifetime_seconds(&self) -> u64
+pub fn radroots_blossom::authorization::AuthoredUploadClaim::new(radroots_blossom::authorization::AuthorizationContent, radroots_blossom::authorization::ServerDomain, radroots_blossom::hash::Sha256, u64, u64) -> core::result::Result<Self, radroots_blossom::Error>
+pub fn radroots_blossom::authorization::AuthoredUploadClaim::server_domain(&self) -> &radroots_blossom::authorization::ServerDomain
+pub const fn radroots_blossom::authorization::AuthoredUploadClaim::sha256(&self) -> radroots_blossom::hash::Sha256
+pub fn radroots_blossom::authorization::AuthoredUploadClaim::wire_parts(&self) -> &radroots_blossom::authorization::AuthorizationWireParts
+pub struct radroots_blossom::authorization::AuthorizationClaim
+impl radroots_blossom::authorization::AuthorizationClaim
+pub const fn radroots_blossom::authorization::AuthorizationClaim::action(&self) -> radroots_blossom::authorization::AuthorizationAction
+pub fn radroots_blossom::authorization::AuthorizationClaim::content(&self) -> &radroots_blossom::authorization::AuthorizationContent
+pub const fn radroots_blossom::authorization::AuthorizationClaim::created_at(&self) -> u64
+pub const fn radroots_blossom::authorization::AuthorizationClaim::expiration(&self) -> u64
+pub fn radroots_blossom::authorization::AuthorizationClaim::hashes(&self) -> &[radroots_blossom::hash::Sha256]
+pub fn radroots_blossom::authorization::AuthorizationClaim::parse(&str, u64, &[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<Self, radroots_blossom::Error>
+pub fn radroots_blossom::authorization::AuthorizationClaim::server_domains(&self) -> &[radroots_blossom::authorization::ServerDomain]
+pub fn radroots_blossom::authorization::AuthorizationClaim::validate(&self, &radroots_blossom::authorization::AuthorizationValidation) -> core::result::Result<radroots_blossom::authorization::ValidatedAuthorizationClaim, radroots_blossom::Error>
+pub struct radroots_blossom::authorization::AuthorizationContent(_)
+impl radroots_blossom::authorization::AuthorizationContent
+pub fn radroots_blossom::authorization::AuthorizationContent::as_str(&self) -> &str
+pub fn radroots_blossom::authorization::AuthorizationContent::parse(&str) -> core::result::Result<Self, radroots_blossom::Error>
+impl core::fmt::Display for radroots_blossom::authorization::AuthorizationContent
+pub fn radroots_blossom::authorization::AuthorizationContent::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_blossom::authorization::AuthorizationContent
+pub type radroots_blossom::authorization::AuthorizationContent::Err = radroots_blossom::Error
+pub fn radroots_blossom::authorization::AuthorizationContent::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub struct radroots_blossom::authorization::AuthorizationValidation
+impl radroots_blossom::authorization::AuthorizationValidation
+pub fn radroots_blossom::authorization::AuthorizationValidation::bud11(radroots_blossom::authorization::AuthorizationTarget, radroots_blossom::authorization::ServerDomain, u64) -> Self
+pub const fn radroots_blossom::authorization::AuthorizationValidation::max_created_age_seconds(&self) -> core::option::Option<u64>
+pub const fn radroots_blossom::authorization::AuthorizationValidation::max_lifetime_seconds(&self) -> core::option::Option<u64>
+pub fn radroots_blossom::authorization::AuthorizationValidation::new(radroots_blossom::authorization::AuthorizationTarget, radroots_blossom::authorization::ServerDomain, radroots_blossom::authorization::ServerScopeRequirement, u64, u64) -> core::result::Result<Self, radroots_blossom::Error>
+pub const fn radroots_blossom::authorization::AuthorizationValidation::now(&self) -> u64
+pub const fn radroots_blossom::authorization::AuthorizationValidation::server_scope_requirement(&self) -> radroots_blossom::authorization::ServerScopeRequirement
+pub const fn radroots_blossom::authorization::AuthorizationValidation::target(&self) -> radroots_blossom::authorization::AuthorizationTarget
+pub fn radroots_blossom::authorization::AuthorizationValidation::target_server(&self) -> &radroots_blossom::authorization::ServerDomain
+pub struct radroots_blossom::authorization::AuthorizationWireParts
+impl radroots_blossom::authorization::AuthorizationWireParts
+pub fn radroots_blossom::authorization::AuthorizationWireParts::content(&self) -> &str
+pub const fn radroots_blossom::authorization::AuthorizationWireParts::created_at(&self) -> u64
+pub fn radroots_blossom::authorization::AuthorizationWireParts::into_parts(self) -> (u16, u64, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String)
+pub const fn radroots_blossom::authorization::AuthorizationWireParts::kind(&self) -> u16
+pub fn radroots_blossom::authorization::AuthorizationWireParts::tags(&self) -> &[alloc::vec::Vec<alloc::string::String>]
+pub struct radroots_blossom::authorization::ServerDomain(_)
+impl radroots_blossom::authorization::ServerDomain
+pub fn radroots_blossom::authorization::ServerDomain::as_str(&self) -> &str
+pub fn radroots_blossom::authorization::ServerDomain::parse(&str) -> core::result::Result<Self, radroots_blossom::Error>
+impl core::fmt::Display for radroots_blossom::authorization::ServerDomain
+pub fn radroots_blossom::authorization::ServerDomain::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_blossom::authorization::ServerDomain
+pub type radroots_blossom::authorization::ServerDomain::Err = radroots_blossom::Error
+pub fn radroots_blossom::authorization::ServerDomain::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub struct radroots_blossom::authorization::ValidatedAuthorizationClaim
+impl radroots_blossom::authorization::ValidatedAuthorizationClaim
+pub const fn radroots_blossom::authorization::ValidatedAuthorizationClaim::action(&self) -> radroots_blossom::authorization::AuthorizationAction
+pub fn radroots_blossom::authorization::ValidatedAuthorizationClaim::claim(&self) -> &radroots_blossom::authorization::AuthorizationClaim
+pub fn radroots_blossom::authorization::ValidatedAuthorizationClaim::content(&self) -> &radroots_blossom::authorization::AuthorizationContent
+pub const fn radroots_blossom::authorization::ValidatedAuthorizationClaim::created_at(&self) -> u64
+pub const fn radroots_blossom::authorization::ValidatedAuthorizationClaim::expiration(&self) -> u64
+pub fn radroots_blossom::authorization::ValidatedAuthorizationClaim::hashes(&self) -> &[radroots_blossom::hash::Sha256]
+pub fn radroots_blossom::authorization::ValidatedAuthorizationClaim::server_domains(&self) -> &[radroots_blossom::authorization::ServerDomain]
+pub const fn radroots_blossom::authorization::ValidatedAuthorizationClaim::target(&self) -> radroots_blossom::authorization::AuthorizationTarget
+pub fn radroots_blossom::authorization::ValidatedAuthorizationClaim::target_server(&self) -> &radroots_blossom::authorization::ServerDomain
+pub const radroots_blossom::authorization::RADROOTS_BLOSSOM_AUTHORIZATION_EVENT_KIND: u16
+pub const radroots_blossom::authorization::RADROOTS_BLOSSOM_AUTH_CONTENT_MAX_BYTES: usize
+pub const radroots_blossom::authorization::RADROOTS_BLOSSOM_AUTH_MAX_CREATED_AGE_SECONDS: u64
+pub const radroots_blossom::authorization::RADROOTS_BLOSSOM_AUTH_MAX_HORIZON_SECONDS: u64
+pub mod radroots_blossom::descriptor
+pub struct radroots_blossom::descriptor::ApprovedDescriptor
+impl radroots_blossom::descriptor::ApprovedDescriptor
+pub fn radroots_blossom::descriptor::ApprovedDescriptor::descriptor(&self) -> &radroots_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::ApprovedDescriptor::into_descriptor(self) -> radroots_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::ApprovedDescriptor::url(&self) -> &radroots_blossom::url::ApprovedBlobUrl
+pub fn radroots_blossom::descriptor::ApprovedDescriptor::verify_bytes(self, &[u8], &radroots_blossom::media_type::MediaType) -> core::result::Result<radroots_blossom::descriptor::ByteVerifiedDescriptor, radroots_blossom::Error>
+pub fn radroots_blossom::descriptor::ApprovedDescriptor::verify_commitment(self, &radroots_blossom::descriptor::ByteCommitment) -> core::result::Result<radroots_blossom::descriptor::ByteVerifiedDescriptor, radroots_blossom::Error>
+pub struct radroots_blossom::descriptor::BlobDescriptor
+impl radroots_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::BlobDescriptor::approve_reference(self) -> core::result::Result<radroots_blossom::descriptor::ApprovedDescriptor, radroots_blossom::Error>
+pub fn radroots_blossom::descriptor::BlobDescriptor::media_type(&self) -> &radroots_blossom::media_type::MediaType
+pub fn radroots_blossom::descriptor::BlobDescriptor::new(radroots_blossom::url::BlobUrl, radroots_blossom::hash::Sha256, u64, radroots_blossom::media_type::MediaType, u64) -> core::result::Result<Self, radroots_blossom::Error>
+pub const fn radroots_blossom::descriptor::BlobDescriptor::sha256(&self) -> radroots_blossom::hash::Sha256
+pub const fn radroots_blossom::descriptor::BlobDescriptor::size(&self) -> u64
+pub const fn radroots_blossom::descriptor::BlobDescriptor::uploaded(&self) -> u64
+pub fn radroots_blossom::descriptor::BlobDescriptor::url(&self) -> &radroots_blossom::url::BlobUrl
+impl serde_core::ser::Serialize for radroots_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::BlobDescriptor::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_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::BlobDescriptor::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_blossom::descriptor::ByteCommitment
+impl radroots_blossom::descriptor::ByteCommitment
+pub fn radroots_blossom::descriptor::ByteCommitment::from_bytes(&[u8], radroots_blossom::media_type::MediaType) -> Self
+pub fn radroots_blossom::descriptor::ByteCommitment::media_type(&self) -> &radroots_blossom::media_type::MediaType
+pub const fn radroots_blossom::descriptor::ByteCommitment::sha256(&self) -> radroots_blossom::hash::Sha256
+pub const fn radroots_blossom::descriptor::ByteCommitment::size(&self) -> u64
+pub struct radroots_blossom::descriptor::ByteVerifiedDescriptor(_)
+impl radroots_blossom::descriptor::ByteVerifiedDescriptor
+pub fn radroots_blossom::descriptor::ByteVerifiedDescriptor::descriptor(&self) -> &radroots_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::ByteVerifiedDescriptor::into_descriptor(self) -> radroots_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::ByteVerifiedDescriptor::media_type(&self) -> &radroots_blossom::media_type::MediaType
+pub const fn radroots_blossom::descriptor::ByteVerifiedDescriptor::sha256(&self) -> radroots_blossom::hash::Sha256
+pub const fn radroots_blossom::descriptor::ByteVerifiedDescriptor::size(&self) -> u64
+pub fn radroots_blossom::descriptor::ByteVerifiedDescriptor::url(&self) -> &radroots_blossom::url::ApprovedBlobUrl
+pub mod radroots_blossom::hash
+pub struct radroots_blossom::hash::FileExtension(_)
+impl radroots_blossom::hash::FileExtension
+pub fn radroots_blossom::hash::FileExtension::as_str(&self) -> &str
+pub fn radroots_blossom::hash::FileExtension::parse(&str) -> core::result::Result<Self, radroots_blossom::Error>
+impl core::fmt::Display for radroots_blossom::hash::FileExtension
+pub fn radroots_blossom::hash::FileExtension::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_blossom::hash::FileExtension
+pub type radroots_blossom::hash::FileExtension::Err = radroots_blossom::Error
+pub fn radroots_blossom::hash::FileExtension::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_blossom::hash::FileExtension
+pub fn radroots_blossom::hash::FileExtension::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_blossom::hash::FileExtension
+pub fn radroots_blossom::hash::FileExtension::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_blossom::hash::HashPath
+impl radroots_blossom::hash::HashPath
+pub fn radroots_blossom::hash::HashPath::extension(&self) -> core::option::Option<&radroots_blossom::hash::FileExtension>
+pub const fn radroots_blossom::hash::HashPath::hash(&self) -> radroots_blossom::hash::Sha256
+pub fn radroots_blossom::hash::HashPath::new(radroots_blossom::hash::Sha256, core::option::Option<radroots_blossom::hash::FileExtension>) -> Self
+pub fn radroots_blossom::hash::HashPath::parse(&str) -> core::result::Result<Self, radroots_blossom::Error>
+pub fn radroots_blossom::hash::HashPath::to_path(&self) -> alloc::string::String
+impl core::fmt::Display for radroots_blossom::hash::HashPath
+pub fn radroots_blossom::hash::HashPath::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_blossom::hash::HashPath
+pub type radroots_blossom::hash::HashPath::Err = radroots_blossom::Error
+pub fn radroots_blossom::hash::HashPath::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_blossom::hash::HashPath
+pub fn radroots_blossom::hash::HashPath::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_blossom::hash::HashPath
+pub fn radroots_blossom::hash::HashPath::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_blossom::hash::Sha256(_)
+impl radroots_blossom::hash::Sha256
+pub const fn radroots_blossom::hash::Sha256::as_bytes(&self) -> &[u8; 32]
+pub fn radroots_blossom::hash::Sha256::digest(&[u8]) -> Self
+pub const fn radroots_blossom::hash::Sha256::from_bytes([u8; 32]) -> Self
+pub fn radroots_blossom::hash::Sha256::from_hex(&str) -> core::result::Result<Self, radroots_blossom::Error>
+pub fn radroots_blossom::hash::Sha256::to_hex(self) -> alloc::string::String
+impl core::fmt::Display for radroots_blossom::hash::Sha256
+pub fn radroots_blossom::hash::Sha256::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_blossom::hash::Sha256
+pub type radroots_blossom::hash::Sha256::Err = radroots_blossom::Error
+pub fn radroots_blossom::hash::Sha256::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_blossom::hash::Sha256
+pub fn radroots_blossom::hash::Sha256::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_blossom::hash::Sha256
+pub fn radroots_blossom::hash::Sha256::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub mod radroots_blossom::media_type
+pub struct radroots_blossom::media_type::MediaType(_)
+impl radroots_blossom::media_type::MediaType
+pub fn radroots_blossom::media_type::MediaType::as_str(&self) -> &str
+pub fn radroots_blossom::media_type::MediaType::parse(&str) -> core::result::Result<Self, radroots_blossom::Error>
+impl core::fmt::Display for radroots_blossom::media_type::MediaType
+pub fn radroots_blossom::media_type::MediaType::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_blossom::media_type::MediaType
+pub type radroots_blossom::media_type::MediaType::Err = radroots_blossom::Error
+pub fn radroots_blossom::media_type::MediaType::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_blossom::media_type::MediaType
+pub fn radroots_blossom::media_type::MediaType::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_blossom::media_type::MediaType
+pub fn radroots_blossom::media_type::MediaType::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub mod radroots_blossom::url
+pub struct radroots_blossom::url::ApprovedBlobUrl(_)
+impl radroots_blossom::url::ApprovedBlobUrl
+pub fn radroots_blossom::url::ApprovedBlobUrl::as_blob_url(&self) -> &radroots_blossom::url::BlobUrl
+pub fn radroots_blossom::url::ApprovedBlobUrl::as_str(&self) -> &str
+pub fn radroots_blossom::url::ApprovedBlobUrl::into_blob_url(self) -> radroots_blossom::url::BlobUrl
+impl core::fmt::Display for radroots_blossom::url::ApprovedBlobUrl
+pub fn radroots_blossom::url::ApprovedBlobUrl::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_blossom::url::BlobUrl
+impl radroots_blossom::url::BlobUrl
+pub fn radroots_blossom::url::BlobUrl::approve(self) -> core::result::Result<radroots_blossom::url::ApprovedBlobUrl, radroots_blossom::Error>
+pub fn radroots_blossom::url::BlobUrl::as_str(&self) -> &str
+pub fn radroots_blossom::url::BlobUrl::hash_path(&self) -> &radroots_blossom::hash::HashPath
+pub fn radroots_blossom::url::BlobUrl::host(&self) -> &str
+pub fn radroots_blossom::url::BlobUrl::is_https(&self) -> bool
+pub fn radroots_blossom::url::BlobUrl::is_loopback_http(&self) -> bool
+pub fn radroots_blossom::url::BlobUrl::parse(&str) -> core::result::Result<Self, radroots_blossom::Error>
+pub fn radroots_blossom::url::BlobUrl::port(&self) -> core::option::Option<u16>
+pub fn radroots_blossom::url::BlobUrl::scheme(&self) -> &str
+impl core::fmt::Display for radroots_blossom::url::BlobUrl
+pub fn radroots_blossom::url::BlobUrl::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_blossom::url::BlobUrl
+pub type radroots_blossom::url::BlobUrl::Err = radroots_blossom::Error
+pub fn radroots_blossom::url::BlobUrl::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_blossom::url::BlobUrl
+pub fn radroots_blossom::url::BlobUrl::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_blossom::url::BlobUrl
+pub fn radroots_blossom::url::BlobUrl::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+#[non_exhaustive] pub enum radroots_blossom::Error
+pub radroots_blossom::Error::AuthorizationActionMismatch
+pub radroots_blossom::Error::AuthorizationCreatedInFuture
+pub radroots_blossom::Error::AuthorizationExpired
+pub radroots_blossom::Error::AuthorizationHashMismatch
+pub radroots_blossom::Error::AuthorizationHashRequired
+pub radroots_blossom::Error::AuthorizationServerMismatch
+pub radroots_blossom::Error::AuthorizationServerRequired
+pub radroots_blossom::Error::AuthorizationStale
+pub radroots_blossom::Error::AuthorizationTimestampOverflow
+pub radroots_blossom::Error::BlobHashMismatch
+pub radroots_blossom::Error::BlobMediaTypeMismatch
+pub radroots_blossom::Error::BlobSizeMismatch
+pub radroots_blossom::Error::BlobSizeMismatch::actual: u64
+pub radroots_blossom::Error::BlobSizeMismatch::expected: u64
+pub radroots_blossom::Error::BlobUrlCredentialsForbidden
+pub radroots_blossom::Error::BlobUrlFragmentForbidden
+pub radroots_blossom::Error::BlobUrlQueryForbidden
+pub radroots_blossom::Error::DescriptorExtensionRequired
+pub radroots_blossom::Error::DescriptorHashMismatch
+pub radroots_blossom::Error::DuplicateAuthorizationActionTag
+pub radroots_blossom::Error::DuplicateAuthorizationExpirationTag
+pub radroots_blossom::Error::InsecureBlobUrl
+pub radroots_blossom::Error::InvalidAuthorizationAction
+pub radroots_blossom::Error::InvalidAuthorizationContent
+pub radroots_blossom::Error::InvalidAuthorizationCreatedAge
+pub radroots_blossom::Error::InvalidAuthorizationLifetime
+pub radroots_blossom::Error::InvalidAuthorizationServerDomain
+pub radroots_blossom::Error::InvalidBlobUrl
+pub radroots_blossom::Error::InvalidFileExtension
+pub radroots_blossom::Error::InvalidHashPath
+pub radroots_blossom::Error::InvalidMediaType
+pub radroots_blossom::Error::InvalidSha256
+pub radroots_blossom::Error::MalformedAuthorizationActionTag
+pub radroots_blossom::Error::MalformedAuthorizationExpirationTag
+pub radroots_blossom::Error::MalformedAuthorizationHashTag
+pub radroots_blossom::Error::MalformedAuthorizationServerTag
+pub radroots_blossom::Error::MissingAuthorizationActionTag
+pub radroots_blossom::Error::MissingAuthorizationExpirationTag
+pub radroots_blossom::Error::UnsupportedBlobUrlScheme
+impl radroots_blossom::Error
+pub const fn radroots_blossom::Error::code(&self) -> &'static str
+impl core::error::Error for radroots_blossom::Error
+impl core::fmt::Display for radroots_blossom::Error
+pub fn radroots_blossom::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_blossom::AuthorizationClaim
+impl radroots_blossom::authorization::AuthorizationClaim
+pub const fn radroots_blossom::authorization::AuthorizationClaim::action(&self) -> radroots_blossom::authorization::AuthorizationAction
+pub fn radroots_blossom::authorization::AuthorizationClaim::content(&self) -> &radroots_blossom::authorization::AuthorizationContent
+pub const fn radroots_blossom::authorization::AuthorizationClaim::created_at(&self) -> u64
+pub const fn radroots_blossom::authorization::AuthorizationClaim::expiration(&self) -> u64
+pub fn radroots_blossom::authorization::AuthorizationClaim::hashes(&self) -> &[radroots_blossom::hash::Sha256]
+pub fn radroots_blossom::authorization::AuthorizationClaim::parse(&str, u64, &[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<Self, radroots_blossom::Error>
+pub fn radroots_blossom::authorization::AuthorizationClaim::server_domains(&self) -> &[radroots_blossom::authorization::ServerDomain]
+pub fn radroots_blossom::authorization::AuthorizationClaim::validate(&self, &radroots_blossom::authorization::AuthorizationValidation) -> core::result::Result<radroots_blossom::authorization::ValidatedAuthorizationClaim, radroots_blossom::Error>
+pub struct radroots_blossom::BlobDescriptor
+impl radroots_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::BlobDescriptor::approve_reference(self) -> core::result::Result<radroots_blossom::descriptor::ApprovedDescriptor, radroots_blossom::Error>
+pub fn radroots_blossom::descriptor::BlobDescriptor::media_type(&self) -> &radroots_blossom::media_type::MediaType
+pub fn radroots_blossom::descriptor::BlobDescriptor::new(radroots_blossom::url::BlobUrl, radroots_blossom::hash::Sha256, u64, radroots_blossom::media_type::MediaType, u64) -> core::result::Result<Self, radroots_blossom::Error>
+pub const fn radroots_blossom::descriptor::BlobDescriptor::sha256(&self) -> radroots_blossom::hash::Sha256
+pub const fn radroots_blossom::descriptor::BlobDescriptor::size(&self) -> u64
+pub const fn radroots_blossom::descriptor::BlobDescriptor::uploaded(&self) -> u64
+pub fn radroots_blossom::descriptor::BlobDescriptor::url(&self) -> &radroots_blossom::url::BlobUrl
+impl serde_core::ser::Serialize for radroots_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::BlobDescriptor::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_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::BlobDescriptor::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_blossom::BlobUrl
+impl radroots_blossom::url::BlobUrl
+pub fn radroots_blossom::url::BlobUrl::approve(self) -> core::result::Result<radroots_blossom::url::ApprovedBlobUrl, radroots_blossom::Error>
+pub fn radroots_blossom::url::BlobUrl::as_str(&self) -> &str
+pub fn radroots_blossom::url::BlobUrl::hash_path(&self) -> &radroots_blossom::hash::HashPath
+pub fn radroots_blossom::url::BlobUrl::host(&self) -> &str
+pub fn radroots_blossom::url::BlobUrl::is_https(&self) -> bool
+pub fn radroots_blossom::url::BlobUrl::is_loopback_http(&self) -> bool
+pub fn radroots_blossom::url::BlobUrl::parse(&str) -> core::result::Result<Self, radroots_blossom::Error>
+pub fn radroots_blossom::url::BlobUrl::port(&self) -> core::option::Option<u16>
+pub fn radroots_blossom::url::BlobUrl::scheme(&self) -> &str
+impl core::fmt::Display for radroots_blossom::url::BlobUrl
+pub fn radroots_blossom::url::BlobUrl::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_blossom::url::BlobUrl
+pub type radroots_blossom::url::BlobUrl::Err = radroots_blossom::Error
+pub fn radroots_blossom::url::BlobUrl::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_blossom::url::BlobUrl
+pub fn radroots_blossom::url::BlobUrl::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_blossom::url::BlobUrl
+pub fn radroots_blossom::url::BlobUrl::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_blossom::ByteVerifiedDescriptor(_)
+impl radroots_blossom::descriptor::ByteVerifiedDescriptor
+pub fn radroots_blossom::descriptor::ByteVerifiedDescriptor::descriptor(&self) -> &radroots_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::ByteVerifiedDescriptor::into_descriptor(self) -> radroots_blossom::descriptor::BlobDescriptor
+pub fn radroots_blossom::descriptor::ByteVerifiedDescriptor::media_type(&self) -> &radroots_blossom::media_type::MediaType
+pub const fn radroots_blossom::descriptor::ByteVerifiedDescriptor::sha256(&self) -> radroots_blossom::hash::Sha256
+pub const fn radroots_blossom::descriptor::ByteVerifiedDescriptor::size(&self) -> u64
+pub fn radroots_blossom::descriptor::ByteVerifiedDescriptor::url(&self) -> &radroots_blossom::url::ApprovedBlobUrl
+pub struct radroots_blossom::MediaType(_)
+impl radroots_blossom::media_type::MediaType
+pub fn radroots_blossom::media_type::MediaType::as_str(&self) -> &str
+pub fn radroots_blossom::media_type::MediaType::parse(&str) -> core::result::Result<Self, radroots_blossom::Error>
+impl core::fmt::Display for radroots_blossom::media_type::MediaType
+pub fn radroots_blossom::media_type::MediaType::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_blossom::media_type::MediaType
+pub type radroots_blossom::media_type::MediaType::Err = radroots_blossom::Error
+pub fn radroots_blossom::media_type::MediaType::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_blossom::media_type::MediaType
+pub fn radroots_blossom::media_type::MediaType::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_blossom::media_type::MediaType
+pub fn radroots_blossom::media_type::MediaType::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_blossom::Sha256(_)
+impl radroots_blossom::hash::Sha256
+pub const fn radroots_blossom::hash::Sha256::as_bytes(&self) -> &[u8; 32]
+pub fn radroots_blossom::hash::Sha256::digest(&[u8]) -> Self
+pub const fn radroots_blossom::hash::Sha256::from_bytes([u8; 32]) -> Self
+pub fn radroots_blossom::hash::Sha256::from_hex(&str) -> core::result::Result<Self, radroots_blossom::Error>
+pub fn radroots_blossom::hash::Sha256::to_hex(self) -> alloc::string::String
+impl core::fmt::Display for radroots_blossom::hash::Sha256
+pub fn radroots_blossom::hash::Sha256::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_blossom::hash::Sha256
+pub type radroots_blossom::hash::Sha256::Err = radroots_blossom::Error
+pub fn radroots_blossom::hash::Sha256::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_blossom::hash::Sha256
+pub fn radroots_blossom::hash::Sha256::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_blossom::hash::Sha256
+pub fn radroots_blossom::hash::Sha256::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
diff --git a/contracts/api_baselines/radroots_core.txt b/contracts/api_baselines/radroots_core.txt
@@ -0,0 +1,521 @@
+pub mod radroots_core
+pub mod radroots_core::currency
+#[non_exhaustive] pub enum radroots_core::currency::ParseError
+pub radroots_core::currency::ParseError::InvalidFormat
+impl core::convert::From<radroots_core::currency::ParseError> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::currency::ParseError) -> Self
+impl core::error::Error for radroots_core::currency::ParseError
+impl core::fmt::Display for radroots_core::currency::ParseError
+pub fn radroots_core::currency::ParseError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_core::currency::Currency(_)
+impl radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::AUD: radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::CAD: radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::EUR: radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::GBP: radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::JPY: radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::USD: radroots_core::currency::Currency
+pub const fn radroots_core::currency::Currency::as_bytes(&self) -> &[u8; 3]
+pub fn radroots_core::currency::Currency::as_str(&self) -> &str
+pub const fn radroots_core::currency::Currency::from_const([u8; 3]) -> core::result::Result<Self, radroots_core::currency::ParseError>
+pub fn radroots_core::currency::Currency::from_str_upper(&str) -> core::result::Result<Self, radroots_core::currency::ParseError>
+pub const fn radroots_core::currency::Currency::minor_unit_exponent(&self) -> u32
+impl core::convert::TryFrom<&str> for radroots_core::currency::Currency
+pub type radroots_core::currency::Currency::Error = radroots_core::currency::ParseError
+pub fn radroots_core::currency::Currency::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Debug for radroots_core::currency::Currency
+pub fn radroots_core::currency::Currency::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_core::currency::Currency
+pub fn radroots_core::currency::Currency::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_core::currency::Currency
+pub type radroots_core::currency::Currency::Err = radroots_core::currency::ParseError
+pub fn radroots_core::currency::Currency::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_core::currency::Currency
+pub fn radroots_core::currency::Currency::serialize<S: serde_core::ser::Serializer>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::currency::Currency
+pub fn radroots_core::currency::Currency::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub mod radroots_core::decimal
+#[non_exhaustive] pub enum radroots_core::decimal::Error
+pub radroots_core::decimal::Error::ArithmeticOverflow
+pub radroots_core::decimal::Error::DivisionByZero
+pub radroots_core::decimal::Error::InvalidFormat
+pub radroots_core::decimal::Error::OutOfRange
+pub radroots_core::decimal::Error::PrecisionLoss
+pub radroots_core::decimal::Error::ScaleOutOfRange
+impl core::convert::From<radroots_core::decimal::Error> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::decimal::Error) -> Self
+impl core::convert::From<radroots_core::decimal::Error> for radroots_core::money::Error
+pub fn radroots_core::money::Error::from(radroots_core::decimal::Error) -> Self
+impl core::convert::From<radroots_core::decimal::Error> for radroots_core::quantity::Error
+pub fn radroots_core::quantity::Error::from(radroots_core::decimal::Error) -> Self
+impl core::error::Error for radroots_core::decimal::Error
+impl core::fmt::Display for radroots_core::decimal::Error
+pub fn radroots_core::decimal::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_core::decimal::Decimal(_)
+impl radroots_core::decimal::Decimal
+pub const radroots_core::decimal::Decimal::MAX: Self
+pub const radroots_core::decimal::Decimal::MAX_SCALE: u32
+pub const radroots_core::decimal::Decimal::MIN: Self
+pub const radroots_core::decimal::Decimal::ONE: Self
+pub const radroots_core::decimal::Decimal::ZERO: Self
+pub fn radroots_core::decimal::Decimal::checked_add(self, Self) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::checked_div(self, Self) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::checked_mul(self, Self) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::checked_sub(self, Self) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::from_f64_display(f64) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::from_str_exact(&str) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::is_sign_negative(&self) -> bool
+pub fn radroots_core::decimal::Decimal::is_zero(&self) -> bool
+pub fn radroots_core::decimal::Decimal::normalize(&self) -> Self
+pub fn radroots_core::decimal::Decimal::rescale(&mut self, u32)
+pub fn radroots_core::decimal::Decimal::scale(&self) -> u32
+pub fn radroots_core::decimal::Decimal::to_f64_lossy(&self) -> core::option::Option<f64>
+pub fn radroots_core::decimal::Decimal::to_u64_exact(&self) -> core::option::Option<u64>
+pub fn radroots_core::decimal::Decimal::try_rescale_exact(&mut self, u32) -> core::result::Result<(), radroots_core::decimal::Error>
+impl core::convert::From<i32> for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::from(i32) -> Self
+impl core::convert::From<i64> for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::from(i64) -> Self
+impl core::convert::From<u32> for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::from(u32) -> Self
+impl core::convert::From<u64> for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::from(u64) -> Self
+impl core::fmt::Display for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_core::decimal::Decimal
+pub type radroots_core::decimal::Decimal::Err = radroots_core::decimal::Error
+pub fn radroots_core::decimal::Decimal::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::serialize<S: serde_core::ser::Serializer>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub mod radroots_core::money
+#[non_exhaustive] pub enum radroots_core::money::Error
+pub radroots_core::money::Error::AmountOverflow
+pub radroots_core::money::Error::ArithmeticOverflow
+pub radroots_core::money::Error::CurrencyMismatch
+pub radroots_core::money::Error::DivisionByZero
+pub radroots_core::money::Error::NegativeAmount
+pub radroots_core::money::Error::NotWholeMinorUnits
+pub radroots_core::money::Error::PrecisionLoss
+pub radroots_core::money::Error::ScaleOutOfRange
+impl core::convert::From<radroots_core::decimal::Error> for radroots_core::money::Error
+pub fn radroots_core::money::Error::from(radroots_core::decimal::Error) -> Self
+impl core::convert::From<radroots_core::money::Error> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::money::Error) -> Self
+impl core::error::Error for radroots_core::money::Error
+impl core::fmt::Display for radroots_core::money::Error
+pub fn radroots_core::money::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_core::money::Money
+impl radroots_core::money::Money
+pub const fn radroots_core::money::Money::amount(&self) -> radroots_core::decimal::Decimal
+pub fn radroots_core::money::Money::checked_add(&self, &Self) -> core::result::Result<Self, radroots_core::money::Error>
+pub fn radroots_core::money::Money::checked_div_decimal(&self, radroots_core::decimal::Decimal) -> core::result::Result<Self, radroots_core::money::Error>
+pub fn radroots_core::money::Money::checked_mul_decimal(&self, radroots_core::decimal::Decimal) -> core::result::Result<Self, radroots_core::money::Error>
+pub fn radroots_core::money::Money::checked_sub(&self, &Self) -> core::result::Result<Self, radroots_core::money::Error>
+pub const fn radroots_core::money::Money::currency(&self) -> radroots_core::currency::Currency
+pub fn radroots_core::money::Money::from_minor_units_u32(u32, radroots_core::currency::Currency) -> Self
+pub fn radroots_core::money::Money::from_minor_units_u64(u64, radroots_core::currency::Currency) -> Self
+pub fn radroots_core::money::Money::is_zero(&self) -> bool
+pub fn radroots_core::money::Money::quantize_to_currency(self) -> Self
+pub fn radroots_core::money::Money::to_minor_units_u32_exact(&self) -> core::result::Result<u32, radroots_core::money::Error>
+pub fn radroots_core::money::Money::to_minor_units_u32_rounded(&self) -> core::result::Result<u32, radroots_core::money::Error>
+pub fn radroots_core::money::Money::to_minor_units_u64_exact(&self) -> core::result::Result<u64, radroots_core::money::Error>
+pub fn radroots_core::money::Money::to_minor_units_u64_rounded(&self) -> core::result::Result<u64, radroots_core::money::Error>
+pub fn radroots_core::money::Money::try_new(radroots_core::decimal::Decimal, radroots_core::currency::Currency) -> core::result::Result<Self, radroots_core::money::Error>
+pub fn radroots_core::money::Money::try_with_scale_exact(self, u32) -> core::result::Result<Self, radroots_core::money::Error>
+pub fn radroots_core::money::Money::zero(radroots_core::currency::Currency) -> Self
+impl core::fmt::Display for radroots_core::money::Money
+pub fn radroots_core::money::Money::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::money::Money
+pub fn radroots_core::money::Money::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub mod radroots_core::percent
+#[non_exhaustive] pub enum radroots_core::percent::ParseError
+pub radroots_core::percent::ParseError::InvalidNumber
+impl core::convert::From<radroots_core::percent::ParseError> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::percent::ParseError) -> Self
+impl core::error::Error for radroots_core::percent::ParseError
+impl core::fmt::Display for radroots_core::percent::ParseError
+pub fn radroots_core::percent::ParseError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_core::percent::Percent
+impl radroots_core::percent::Percent
+pub fn radroots_core::percent::Percent::new(radroots_core::decimal::Decimal) -> Self
+pub fn radroots_core::percent::Percent::try_from_ratio(radroots_core::decimal::Decimal) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::percent::Percent::try_of_money(&self, &radroots_core::money::Money) -> core::result::Result<radroots_core::money::Money, radroots_core::money::Error>
+pub fn radroots_core::percent::Percent::try_of_money_quantized(&self, &radroots_core::money::Money) -> core::result::Result<radroots_core::money::Money, radroots_core::money::Error>
+pub fn radroots_core::percent::Percent::try_to_ratio(&self) -> core::result::Result<radroots_core::decimal::Decimal, radroots_core::decimal::Error>
+pub const fn radroots_core::percent::Percent::value(&self) -> radroots_core::decimal::Decimal
+impl core::fmt::Display for radroots_core::percent::Percent
+pub fn radroots_core::percent::Percent::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_core::percent::Percent
+pub type radroots_core::percent::Percent::Err = radroots_core::percent::ParseError
+pub fn radroots_core::percent::Percent::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub mod radroots_core::pricing
+#[non_exhaustive] pub enum radroots_core::pricing::DiscountError
+pub radroots_core::pricing::DiscountError::NegativeThreshold
+pub radroots_core::pricing::DiscountError::NegativeValue
+impl core::convert::From<radroots_core::pricing::DiscountError> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::pricing::DiscountError) -> Self
+impl core::error::Error for radroots_core::pricing::DiscountError
+impl core::fmt::Display for radroots_core::pricing::DiscountError
+pub fn radroots_core::pricing::DiscountError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_core::pricing::DiscountScope
+pub radroots_core::pricing::DiscountScope::Bin
+pub radroots_core::pricing::DiscountScope::OrderTotal
+pub enum radroots_core::pricing::DiscountThreshold
+pub radroots_core::pricing::DiscountThreshold::BinCount
+pub radroots_core::pricing::DiscountThreshold::BinCount::bin_id: alloc::string::String
+pub radroots_core::pricing::DiscountThreshold::BinCount::min: u32
+pub radroots_core::pricing::DiscountThreshold::OrderQuantity
+pub radroots_core::pricing::DiscountThreshold::OrderQuantity::min: radroots_core::quantity::Quantity
+pub enum radroots_core::pricing::DiscountValue
+pub radroots_core::pricing::DiscountValue::MoneyPerBin(radroots_core::money::Money)
+pub radroots_core::pricing::DiscountValue::Percent(radroots_core::percent::Percent)
+pub enum radroots_core::pricing::Error
+pub radroots_core::pricing::Error::ArithmeticOverflow
+pub radroots_core::pricing::Error::NegativePrice
+pub radroots_core::pricing::Error::NegativeRequestedQuantity
+pub radroots_core::pricing::Error::NonConvertibleUnits
+pub radroots_core::pricing::Error::NonConvertibleUnits::from: radroots_core::unit::Unit
+pub radroots_core::pricing::Error::NonConvertibleUnits::to: radroots_core::unit::Unit
+pub radroots_core::pricing::Error::PerQuantityNegative
+pub radroots_core::pricing::Error::PerQuantityZero
+pub radroots_core::pricing::Error::UnitMismatch
+pub radroots_core::pricing::Error::UnitMismatch::have: radroots_core::unit::Unit
+pub radroots_core::pricing::Error::UnitMismatch::want: radroots_core::unit::Unit
+impl core::convert::From<radroots_core::pricing::Error> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::pricing::Error) -> Self
+impl core::error::Error for radroots_core::pricing::Error
+impl core::fmt::Display for radroots_core::pricing::Error
+pub fn radroots_core::pricing::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_core::pricing::Discount
+impl radroots_core::pricing::Discount
+pub fn radroots_core::pricing::Discount::is_non_negative(&self) -> bool
+pub fn radroots_core::pricing::Discount::scope(&self) -> &radroots_core::pricing::DiscountScope
+pub fn radroots_core::pricing::Discount::threshold(&self) -> &radroots_core::pricing::DiscountThreshold
+pub fn radroots_core::pricing::Discount::try_new(radroots_core::pricing::DiscountScope, radroots_core::pricing::DiscountThreshold, radroots_core::pricing::DiscountValue) -> core::result::Result<Self, radroots_core::pricing::DiscountError>
+pub fn radroots_core::pricing::Discount::validate(&self) -> core::result::Result<(), radroots_core::pricing::DiscountError>
+pub fn radroots_core::pricing::Discount::value(&self) -> &radroots_core::pricing::DiscountValue
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::pricing::Discount
+pub fn radroots_core::pricing::Discount::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub struct radroots_core::pricing::QuantityPrice
+impl radroots_core::QuantityPrice
+pub fn radroots_core::QuantityPrice::amount(&self) -> &radroots_core::money::Money
+pub fn radroots_core::QuantityPrice::is_price_per_canonical_unit(&self) -> bool
+pub fn radroots_core::QuantityPrice::quantity(&self) -> &radroots_core::quantity::Quantity
+pub fn radroots_core::QuantityPrice::try_cost_for_amount_in(&self, radroots_core::decimal::Decimal, radroots_core::unit::Unit) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::try_cost_for_quantity_in(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::try_new(radroots_core::money::Money, radroots_core::quantity::Quantity) -> core::result::Result<Self, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::try_to_canonical_unit_price(&self) -> core::result::Result<radroots_core::QuantityPrice, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::try_to_unit_price(&self, radroots_core::unit::Unit) -> core::result::Result<radroots_core::QuantityPrice, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::validate(&self) -> core::result::Result<(), radroots_core::pricing::Error>
+impl radroots_core::pricing::QuantityPriceOps for radroots_core::QuantityPrice
+pub fn radroots_core::QuantityPrice::try_cost_for(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::try_cost_for_rounded(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::QuantityPrice
+pub fn radroots_core::QuantityPrice::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub trait radroots_core::pricing::QuantityPriceOps: radroots_core::quantity_price::sealed::Sealed
+pub fn radroots_core::pricing::QuantityPriceOps::try_cost_for(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+pub fn radroots_core::pricing::QuantityPriceOps::try_cost_for_rounded(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+impl radroots_core::pricing::QuantityPriceOps for radroots_core::QuantityPrice
+pub fn radroots_core::QuantityPrice::try_cost_for(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::try_cost_for_rounded(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+pub mod radroots_core::quantity
+#[non_exhaustive] pub enum radroots_core::quantity::Error
+pub radroots_core::quantity::Error::ArithmeticOverflow
+pub radroots_core::quantity::Error::DivisionByZero
+pub radroots_core::quantity::Error::NegativeAmount
+pub radroots_core::quantity::Error::UnitMismatch
+impl core::convert::From<radroots_core::decimal::Error> for radroots_core::quantity::Error
+pub fn radroots_core::quantity::Error::from(radroots_core::decimal::Error) -> Self
+impl core::convert::From<radroots_core::quantity::Error> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::quantity::Error) -> Self
+impl core::error::Error for radroots_core::quantity::Error
+impl core::fmt::Display for radroots_core::quantity::Error
+pub fn radroots_core::quantity::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_core::quantity::Quantity
+impl radroots_core::quantity::Quantity
+pub const fn radroots_core::quantity::Quantity::amount(&self) -> radroots_core::decimal::Decimal
+pub fn radroots_core::quantity::Quantity::canonical_unit(&self) -> radroots_core::unit::Unit
+pub fn radroots_core::quantity::Quantity::checked_add(&self, &radroots_core::quantity::Quantity) -> core::option::Option<radroots_core::quantity::Quantity>
+pub fn radroots_core::quantity::Quantity::checked_div_decimal(&self, radroots_core::decimal::Decimal) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::quantity::Error>
+pub fn radroots_core::quantity::Quantity::checked_mul_decimal(&self, radroots_core::decimal::Decimal) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::quantity::Error>
+pub fn radroots_core::quantity::Quantity::checked_sub(&self, &radroots_core::quantity::Quantity) -> core::option::Option<radroots_core::quantity::Quantity>
+pub fn radroots_core::quantity::Quantity::clear_label(self) -> Self
+pub fn radroots_core::quantity::Quantity::is_canonical(&self) -> bool
+pub fn radroots_core::quantity::Quantity::is_zero(&self) -> bool
+pub fn radroots_core::quantity::Quantity::label(&self) -> core::option::Option<&str>
+pub fn radroots_core::quantity::Quantity::to_canonical(&self) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::unit::ConvertError>
+pub fn radroots_core::quantity::Quantity::try_add(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::quantity::Error>
+pub fn radroots_core::quantity::Quantity::try_convert_to(&self, radroots_core::unit::Unit) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::unit::ConvertError>
+pub fn radroots_core::quantity::Quantity::try_new(radroots_core::decimal::Decimal, radroots_core::unit::Unit) -> core::result::Result<Self, radroots_core::quantity::Error>
+pub fn radroots_core::quantity::Quantity::try_sub(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::quantity::Error>
+pub const fn radroots_core::quantity::Quantity::unit(&self) -> radroots_core::unit::Unit
+pub fn radroots_core::quantity::Quantity::with_label<S: core::convert::Into<alloc::string::String>>(self, S) -> Self
+pub fn radroots_core::quantity::Quantity::with_optional_label<S: core::convert::Into<alloc::string::String>>(self, core::option::Option<S>) -> Self
+pub fn radroots_core::quantity::Quantity::zero(radroots_core::unit::Unit) -> Self
+impl core::fmt::Display for radroots_core::quantity::Quantity
+pub fn radroots_core::quantity::Quantity::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::quantity::Quantity
+pub fn radroots_core::quantity::Quantity::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub mod radroots_core::unit
+pub enum radroots_core::unit::ConvertError
+pub radroots_core::unit::ConvertError::ArithmeticOverflow
+pub radroots_core::unit::ConvertError::ArithmeticOverflow::from: radroots_core::unit::Unit
+pub radroots_core::unit::ConvertError::ArithmeticOverflow::to: radroots_core::unit::Unit
+pub radroots_core::unit::ConvertError::NotConvertibleUnits
+pub radroots_core::unit::ConvertError::NotConvertibleUnits::from: radroots_core::unit::Unit
+pub radroots_core::unit::ConvertError::NotConvertibleUnits::to: radroots_core::unit::Unit
+pub radroots_core::unit::ConvertError::NotMassUnit
+pub radroots_core::unit::ConvertError::NotMassUnit::from: radroots_core::unit::Unit
+pub radroots_core::unit::ConvertError::NotMassUnit::to: radroots_core::unit::Unit
+pub radroots_core::unit::ConvertError::NotVolumeUnit
+pub radroots_core::unit::ConvertError::NotVolumeUnit::from: radroots_core::unit::Unit
+pub radroots_core::unit::ConvertError::NotVolumeUnit::to: radroots_core::unit::Unit
+impl core::convert::From<radroots_core::unit::ConvertError> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::unit::ConvertError) -> Self
+impl core::error::Error for radroots_core::unit::ConvertError
+impl core::fmt::Display for radroots_core::unit::ConvertError
+pub fn radroots_core::unit::ConvertError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_core::unit::ParseError
+pub radroots_core::unit::ParseError::NotAMassUnit
+pub radroots_core::unit::ParseError::NotAVolumeUnit
+pub radroots_core::unit::ParseError::UnknownUnit
+impl core::convert::From<radroots_core::unit::ParseError> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::unit::ParseError) -> Self
+impl core::error::Error for radroots_core::unit::ParseError
+impl core::fmt::Display for radroots_core::unit::ParseError
+pub fn radroots_core::unit::ParseError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_core::unit::Unit
+pub radroots_core::unit::Unit::Each
+pub radroots_core::unit::Unit::MassG
+pub radroots_core::unit::Unit::MassKg
+pub radroots_core::unit::Unit::MassLb
+pub radroots_core::unit::Unit::MassOz
+pub radroots_core::unit::Unit::VolumeL
+pub radroots_core::unit::Unit::VolumeMl
+impl radroots_core::unit::Unit
+pub fn radroots_core::unit::Unit::canonical_unit(&self) -> Self
+pub fn radroots_core::unit::Unit::code(&self) -> &'static str
+pub fn radroots_core::unit::Unit::dimension(&self) -> radroots_core::unit::UnitDimension
+pub fn radroots_core::unit::Unit::is_count(&self) -> bool
+pub fn radroots_core::unit::Unit::is_mass(&self) -> bool
+pub fn radroots_core::unit::Unit::is_volume(&self) -> bool
+pub fn radroots_core::unit::Unit::same_dimension(Self, Self) -> bool
+impl core::fmt::Display for radroots_core::unit::Unit
+pub fn radroots_core::unit::Unit::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_core::unit::Unit
+pub type radroots_core::unit::Unit::Err = radroots_core::unit::ParseError
+pub fn radroots_core::unit::Unit::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_core::unit::Unit
+pub fn radroots_core::unit::Unit::serialize<S: serde_core::ser::Serializer>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::unit::Unit
+pub fn radroots_core::unit::Unit::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub enum radroots_core::unit::UnitDimension
+pub radroots_core::unit::UnitDimension::Count
+pub radroots_core::unit::UnitDimension::Mass
+pub radroots_core::unit::UnitDimension::Volume
+pub fn radroots_core::unit::convert_mass_decimal(radroots_core::decimal::Decimal, radroots_core::unit::Unit, radroots_core::unit::Unit) -> core::result::Result<radroots_core::decimal::Decimal, radroots_core::unit::ConvertError>
+pub fn radroots_core::unit::convert_unit_decimal(radroots_core::decimal::Decimal, radroots_core::unit::Unit, radroots_core::unit::Unit) -> core::result::Result<radroots_core::decimal::Decimal, radroots_core::unit::ConvertError>
+pub fn radroots_core::unit::convert_volume_decimal(radroots_core::decimal::Decimal, radroots_core::unit::Unit, radroots_core::unit::Unit) -> core::result::Result<radroots_core::decimal::Decimal, radroots_core::unit::ConvertError>
+pub fn radroots_core::unit::parse_mass_unit(&str) -> core::result::Result<radroots_core::unit::Unit, radroots_core::unit::ParseError>
+pub fn radroots_core::unit::parse_volume_unit(&str) -> core::result::Result<radroots_core::unit::Unit, radroots_core::unit::ParseError>
+#[non_exhaustive] pub enum radroots_core::Error
+pub radroots_core::Error::Currency(radroots_core::currency::ParseError)
+pub radroots_core::Error::Decimal(radroots_core::decimal::Error)
+pub radroots_core::Error::Discount(radroots_core::pricing::DiscountError)
+pub radroots_core::Error::Money(radroots_core::money::Error)
+pub radroots_core::Error::Percent(radroots_core::percent::ParseError)
+pub radroots_core::Error::Pricing(radroots_core::pricing::Error)
+pub radroots_core::Error::Quantity(radroots_core::quantity::Error)
+pub radroots_core::Error::UnitConversion(radroots_core::unit::ConvertError)
+pub radroots_core::Error::UnitParse(radroots_core::unit::ParseError)
+impl core::convert::From<radroots_core::currency::ParseError> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::currency::ParseError) -> Self
+impl core::convert::From<radroots_core::decimal::Error> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::decimal::Error) -> Self
+impl core::convert::From<radroots_core::money::Error> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::money::Error) -> Self
+impl core::convert::From<radroots_core::percent::ParseError> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::percent::ParseError) -> Self
+impl core::convert::From<radroots_core::pricing::DiscountError> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::pricing::DiscountError) -> Self
+impl core::convert::From<radroots_core::pricing::Error> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::pricing::Error) -> Self
+impl core::convert::From<radroots_core::quantity::Error> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::quantity::Error) -> Self
+impl core::convert::From<radroots_core::unit::ConvertError> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::unit::ConvertError) -> Self
+impl core::convert::From<radroots_core::unit::ParseError> for radroots_core::Error
+pub fn radroots_core::Error::from(radroots_core::unit::ParseError) -> Self
+impl core::error::Error for radroots_core::Error
+pub fn radroots_core::Error::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_core::Error
+pub fn radroots_core::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_core::Unit
+pub radroots_core::Unit::Each
+pub radroots_core::Unit::MassG
+pub radroots_core::Unit::MassKg
+pub radroots_core::Unit::MassLb
+pub radroots_core::Unit::MassOz
+pub radroots_core::Unit::VolumeL
+pub radroots_core::Unit::VolumeMl
+impl radroots_core::unit::Unit
+pub fn radroots_core::unit::Unit::canonical_unit(&self) -> Self
+pub fn radroots_core::unit::Unit::code(&self) -> &'static str
+pub fn radroots_core::unit::Unit::dimension(&self) -> radroots_core::unit::UnitDimension
+pub fn radroots_core::unit::Unit::is_count(&self) -> bool
+pub fn radroots_core::unit::Unit::is_mass(&self) -> bool
+pub fn radroots_core::unit::Unit::is_volume(&self) -> bool
+pub fn radroots_core::unit::Unit::same_dimension(Self, Self) -> bool
+impl core::fmt::Display for radroots_core::unit::Unit
+pub fn radroots_core::unit::Unit::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_core::unit::Unit
+pub type radroots_core::unit::Unit::Err = radroots_core::unit::ParseError
+pub fn radroots_core::unit::Unit::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_core::unit::Unit
+pub fn radroots_core::unit::Unit::serialize<S: serde_core::ser::Serializer>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::unit::Unit
+pub fn radroots_core::unit::Unit::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub struct radroots_core::Currency(_)
+impl radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::AUD: radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::CAD: radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::EUR: radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::GBP: radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::JPY: radroots_core::currency::Currency
+pub const radroots_core::currency::Currency::USD: radroots_core::currency::Currency
+pub const fn radroots_core::currency::Currency::as_bytes(&self) -> &[u8; 3]
+pub fn radroots_core::currency::Currency::as_str(&self) -> &str
+pub const fn radroots_core::currency::Currency::from_const([u8; 3]) -> core::result::Result<Self, radroots_core::currency::ParseError>
+pub fn radroots_core::currency::Currency::from_str_upper(&str) -> core::result::Result<Self, radroots_core::currency::ParseError>
+pub const fn radroots_core::currency::Currency::minor_unit_exponent(&self) -> u32
+impl core::convert::TryFrom<&str> for radroots_core::currency::Currency
+pub type radroots_core::currency::Currency::Error = radroots_core::currency::ParseError
+pub fn radroots_core::currency::Currency::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Debug for radroots_core::currency::Currency
+pub fn radroots_core::currency::Currency::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_core::currency::Currency
+pub fn radroots_core::currency::Currency::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_core::currency::Currency
+pub type radroots_core::currency::Currency::Err = radroots_core::currency::ParseError
+pub fn radroots_core::currency::Currency::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_core::currency::Currency
+pub fn radroots_core::currency::Currency::serialize<S: serde_core::ser::Serializer>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::currency::Currency
+pub fn radroots_core::currency::Currency::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub struct radroots_core::Decimal(_)
+impl radroots_core::decimal::Decimal
+pub const radroots_core::decimal::Decimal::MAX: Self
+pub const radroots_core::decimal::Decimal::MAX_SCALE: u32
+pub const radroots_core::decimal::Decimal::MIN: Self
+pub const radroots_core::decimal::Decimal::ONE: Self
+pub const radroots_core::decimal::Decimal::ZERO: Self
+pub fn radroots_core::decimal::Decimal::checked_add(self, Self) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::checked_div(self, Self) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::checked_mul(self, Self) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::checked_sub(self, Self) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::from_f64_display(f64) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::from_str_exact(&str) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::decimal::Decimal::is_sign_negative(&self) -> bool
+pub fn radroots_core::decimal::Decimal::is_zero(&self) -> bool
+pub fn radroots_core::decimal::Decimal::normalize(&self) -> Self
+pub fn radroots_core::decimal::Decimal::rescale(&mut self, u32)
+pub fn radroots_core::decimal::Decimal::scale(&self) -> u32
+pub fn radroots_core::decimal::Decimal::to_f64_lossy(&self) -> core::option::Option<f64>
+pub fn radroots_core::decimal::Decimal::to_u64_exact(&self) -> core::option::Option<u64>
+pub fn radroots_core::decimal::Decimal::try_rescale_exact(&mut self, u32) -> core::result::Result<(), radroots_core::decimal::Error>
+impl core::convert::From<i32> for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::from(i32) -> Self
+impl core::convert::From<i64> for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::from(i64) -> Self
+impl core::convert::From<u32> for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::from(u32) -> Self
+impl core::convert::From<u64> for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::from(u64) -> Self
+impl core::fmt::Display for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_core::decimal::Decimal
+pub type radroots_core::decimal::Decimal::Err = radroots_core::decimal::Error
+pub fn radroots_core::decimal::Decimal::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::serialize<S: serde_core::ser::Serializer>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::decimal::Decimal
+pub fn radroots_core::decimal::Decimal::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub struct radroots_core::Money
+impl radroots_core::money::Money
+pub const fn radroots_core::money::Money::amount(&self) -> radroots_core::decimal::Decimal
+pub fn radroots_core::money::Money::checked_add(&self, &Self) -> core::result::Result<Self, radroots_core::money::Error>
+pub fn radroots_core::money::Money::checked_div_decimal(&self, radroots_core::decimal::Decimal) -> core::result::Result<Self, radroots_core::money::Error>
+pub fn radroots_core::money::Money::checked_mul_decimal(&self, radroots_core::decimal::Decimal) -> core::result::Result<Self, radroots_core::money::Error>
+pub fn radroots_core::money::Money::checked_sub(&self, &Self) -> core::result::Result<Self, radroots_core::money::Error>
+pub const fn radroots_core::money::Money::currency(&self) -> radroots_core::currency::Currency
+pub fn radroots_core::money::Money::from_minor_units_u32(u32, radroots_core::currency::Currency) -> Self
+pub fn radroots_core::money::Money::from_minor_units_u64(u64, radroots_core::currency::Currency) -> Self
+pub fn radroots_core::money::Money::is_zero(&self) -> bool
+pub fn radroots_core::money::Money::quantize_to_currency(self) -> Self
+pub fn radroots_core::money::Money::to_minor_units_u32_exact(&self) -> core::result::Result<u32, radroots_core::money::Error>
+pub fn radroots_core::money::Money::to_minor_units_u32_rounded(&self) -> core::result::Result<u32, radroots_core::money::Error>
+pub fn radroots_core::money::Money::to_minor_units_u64_exact(&self) -> core::result::Result<u64, radroots_core::money::Error>
+pub fn radroots_core::money::Money::to_minor_units_u64_rounded(&self) -> core::result::Result<u64, radroots_core::money::Error>
+pub fn radroots_core::money::Money::try_new(radroots_core::decimal::Decimal, radroots_core::currency::Currency) -> core::result::Result<Self, radroots_core::money::Error>
+pub fn radroots_core::money::Money::try_with_scale_exact(self, u32) -> core::result::Result<Self, radroots_core::money::Error>
+pub fn radroots_core::money::Money::zero(radroots_core::currency::Currency) -> Self
+impl core::fmt::Display for radroots_core::money::Money
+pub fn radroots_core::money::Money::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::money::Money
+pub fn radroots_core::money::Money::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub struct radroots_core::Percent
+impl radroots_core::percent::Percent
+pub fn radroots_core::percent::Percent::new(radroots_core::decimal::Decimal) -> Self
+pub fn radroots_core::percent::Percent::try_from_ratio(radroots_core::decimal::Decimal) -> core::result::Result<Self, radroots_core::decimal::Error>
+pub fn radroots_core::percent::Percent::try_of_money(&self, &radroots_core::money::Money) -> core::result::Result<radroots_core::money::Money, radroots_core::money::Error>
+pub fn radroots_core::percent::Percent::try_of_money_quantized(&self, &radroots_core::money::Money) -> core::result::Result<radroots_core::money::Money, radroots_core::money::Error>
+pub fn radroots_core::percent::Percent::try_to_ratio(&self) -> core::result::Result<radroots_core::decimal::Decimal, radroots_core::decimal::Error>
+pub const fn radroots_core::percent::Percent::value(&self) -> radroots_core::decimal::Decimal
+impl core::fmt::Display for radroots_core::percent::Percent
+pub fn radroots_core::percent::Percent::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_core::percent::Percent
+pub type radroots_core::percent::Percent::Err = radroots_core::percent::ParseError
+pub fn radroots_core::percent::Percent::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub struct radroots_core::Quantity
+impl radroots_core::quantity::Quantity
+pub const fn radroots_core::quantity::Quantity::amount(&self) -> radroots_core::decimal::Decimal
+pub fn radroots_core::quantity::Quantity::canonical_unit(&self) -> radroots_core::unit::Unit
+pub fn radroots_core::quantity::Quantity::checked_add(&self, &radroots_core::quantity::Quantity) -> core::option::Option<radroots_core::quantity::Quantity>
+pub fn radroots_core::quantity::Quantity::checked_div_decimal(&self, radroots_core::decimal::Decimal) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::quantity::Error>
+pub fn radroots_core::quantity::Quantity::checked_mul_decimal(&self, radroots_core::decimal::Decimal) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::quantity::Error>
+pub fn radroots_core::quantity::Quantity::checked_sub(&self, &radroots_core::quantity::Quantity) -> core::option::Option<radroots_core::quantity::Quantity>
+pub fn radroots_core::quantity::Quantity::clear_label(self) -> Self
+pub fn radroots_core::quantity::Quantity::is_canonical(&self) -> bool
+pub fn radroots_core::quantity::Quantity::is_zero(&self) -> bool
+pub fn radroots_core::quantity::Quantity::label(&self) -> core::option::Option<&str>
+pub fn radroots_core::quantity::Quantity::to_canonical(&self) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::unit::ConvertError>
+pub fn radroots_core::quantity::Quantity::try_add(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::quantity::Error>
+pub fn radroots_core::quantity::Quantity::try_convert_to(&self, radroots_core::unit::Unit) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::unit::ConvertError>
+pub fn radroots_core::quantity::Quantity::try_new(radroots_core::decimal::Decimal, radroots_core::unit::Unit) -> core::result::Result<Self, radroots_core::quantity::Error>
+pub fn radroots_core::quantity::Quantity::try_sub(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::quantity::Quantity, radroots_core::quantity::Error>
+pub const fn radroots_core::quantity::Quantity::unit(&self) -> radroots_core::unit::Unit
+pub fn radroots_core::quantity::Quantity::with_label<S: core::convert::Into<alloc::string::String>>(self, S) -> Self
+pub fn radroots_core::quantity::Quantity::with_optional_label<S: core::convert::Into<alloc::string::String>>(self, core::option::Option<S>) -> Self
+pub fn radroots_core::quantity::Quantity::zero(radroots_core::unit::Unit) -> Self
+impl core::fmt::Display for radroots_core::quantity::Quantity
+pub fn radroots_core::quantity::Quantity::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::quantity::Quantity
+pub fn radroots_core::quantity::Quantity::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
+pub struct radroots_core::QuantityPrice
+impl radroots_core::QuantityPrice
+pub fn radroots_core::QuantityPrice::amount(&self) -> &radroots_core::money::Money
+pub fn radroots_core::QuantityPrice::is_price_per_canonical_unit(&self) -> bool
+pub fn radroots_core::QuantityPrice::quantity(&self) -> &radroots_core::quantity::Quantity
+pub fn radroots_core::QuantityPrice::try_cost_for_amount_in(&self, radroots_core::decimal::Decimal, radroots_core::unit::Unit) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::try_cost_for_quantity_in(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::try_new(radroots_core::money::Money, radroots_core::quantity::Quantity) -> core::result::Result<Self, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::try_to_canonical_unit_price(&self) -> core::result::Result<radroots_core::QuantityPrice, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::try_to_unit_price(&self, radroots_core::unit::Unit) -> core::result::Result<radroots_core::QuantityPrice, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::validate(&self) -> core::result::Result<(), radroots_core::pricing::Error>
+impl radroots_core::pricing::QuantityPriceOps for radroots_core::QuantityPrice
+pub fn radroots_core::QuantityPrice::try_cost_for(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+pub fn radroots_core::QuantityPrice::try_cost_for_rounded(&self, &radroots_core::quantity::Quantity) -> core::result::Result<radroots_core::money::Money, radroots_core::pricing::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_core::QuantityPrice
+pub fn radroots_core::QuantityPrice::deserialize<D: serde_core::de::Deserializer<'de>>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error>
diff --git a/contracts/api_baselines/radroots_event.txt b/contracts/api_baselines/radroots_event.txt
@@ -0,0 +1,3594 @@
+pub mod radroots_event
+pub mod radroots_event::admission
+#[non_exhaustive] pub enum radroots_event::admission::Error
+pub radroots_event::admission::Error::ContractValidation(crate::contract::registry_v7::ContractValidationError)
+pub radroots_event::admission::Error::IdMismatch
+pub radroots_event::admission::Error::IdMismatch::actual: radroots_event::id::EventId
+pub radroots_event::admission::Error::IdMismatch::expected: radroots_event::id::EventId
+pub radroots_event::admission::Error::MalformedEnvelope
+pub radroots_event::admission::Error::SignatureInvalid
+impl radroots_event::Error
+pub const fn radroots_event::Error::code(&self) -> &'static str
+impl core::error::Error for radroots_event::Error
+impl core::fmt::Display for radroots_event::Error
+pub fn radroots_event::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::admission::AdmittedEvent
+impl radroots_event::admission::AdmittedEvent
+pub const fn radroots_event::admission::AdmittedEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event::admission::AdmittedEvent::into_validated_event(self) -> radroots_event::admission::ContractValidatedEvent
+pub fn radroots_event::admission::AdmittedEvent::make_visible_with<P>(self, &P) -> core::result::Result<radroots_event::admission::VisibleEvent, <P as radroots_event::admission::VisibilityPolicy>::Error> where P: radroots_event::admission::VisibilityPolicy + ?core::marker::Sized
+pub const fn radroots_event::admission::AdmittedEvent::policy_id(&self) -> &'static str
+pub const fn radroots_event::admission::AdmittedEvent::validated_event(&self) -> &radroots_event::admission::ContractValidatedEvent
+pub struct radroots_event::admission::ContractValidatedEvent
+impl radroots_event::admission::ContractValidatedEvent
+pub fn radroots_event::admission::ContractValidatedEvent::admit_with<P>(self, &P) -> core::result::Result<radroots_event::admission::AdmittedEvent, <P as radroots_event::admission::AdmissionPolicy>::Error> where P: radroots_event::admission::AdmissionPolicy + ?core::marker::Sized
+impl radroots_event::admission::ContractValidatedEvent
+pub const fn radroots_event::admission::ContractValidatedEvent::contract(&self) -> &'static EventContract
+pub const fn radroots_event::admission::ContractValidatedEvent::contract_id(&self) -> &'static str
+pub const fn radroots_event::admission::ContractValidatedEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event::admission::ContractValidatedEvent::into_event(self) -> radroots_event::envelope::EventEnvelope
+pub fn radroots_event::admission::ContractValidatedEvent::into_verified_event(self) -> radroots_event::VerifiedEvent
+pub const fn radroots_event::admission::ContractValidatedEvent::verified_event(&self) -> &radroots_event::VerifiedEvent
+pub struct radroots_event::admission::IdVerifiedEvent(_)
+impl radroots_event::admission::IdVerifiedEvent
+pub const fn radroots_event::admission::IdVerifiedEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event::admission::IdVerifiedEvent::into_event(self) -> radroots_event::envelope::EventEnvelope
+pub fn radroots_event::admission::IdVerifiedEvent::verify_signature<V>(self, &V) -> core::result::Result<radroots_event::VerifiedEvent, radroots_event::Error> where V: radroots_event::admission::SignatureVerifier + ?core::marker::Sized
+pub struct radroots_event::admission::RawEvent(_)
+impl radroots_event::admission::RawEvent
+pub const fn radroots_event::admission::RawEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event::admission::RawEvent::into_event(self) -> radroots_event::envelope::EventEnvelope
+pub const fn radroots_event::admission::RawEvent::new(radroots_event::envelope::EventEnvelope) -> Self
+pub fn radroots_event::admission::RawEvent::verify_id(self) -> core::result::Result<radroots_event::admission::IdVerifiedEvent, radroots_event::Error>
+pub struct radroots_event::admission::SignatureVerifiedEvent(_)
+impl radroots_event::VerifiedEvent
+pub const fn radroots_event::VerifiedEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event::VerifiedEvent::into_event(self) -> radroots_event::envelope::EventEnvelope
+pub fn radroots_event::VerifiedEvent::validate_contract(self) -> core::result::Result<radroots_event::admission::ContractValidatedEvent, radroots_event::Error>
+pub struct radroots_event::admission::VisibleEvent
+impl radroots_event::admission::VisibleEvent
+pub const fn radroots_event::admission::VisibleEvent::admitted_event(&self) -> &radroots_event::admission::AdmittedEvent
+pub const fn radroots_event::admission::VisibleEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event::admission::VisibleEvent::into_admitted_event(self) -> radroots_event::admission::AdmittedEvent
+pub const fn radroots_event::admission::VisibleEvent::policy_id(&self) -> &'static str
+pub trait radroots_event::admission::AdmissionPolicy: core::marker::Send + core::marker::Sync
+pub type radroots_event::admission::AdmissionPolicy::Error
+pub fn radroots_event::admission::AdmissionPolicy::admit(&self, &radroots_event::admission::ContractValidatedEvent) -> core::result::Result<(), Self::Error>
+pub fn radroots_event::admission::AdmissionPolicy::policy_id(&self) -> &'static str
+pub trait radroots_event::admission::SignatureVerifier: core::marker::Send + core::marker::Sync
+pub fn radroots_event::admission::SignatureVerifier::verify_signature(&self, &radroots_event::envelope::EventEnvelope) -> core::result::Result<(), radroots_event::Error>
+pub trait radroots_event::admission::VisibilityPolicy: core::marker::Send + core::marker::Sync
+pub type radroots_event::admission::VisibilityPolicy::Error
+pub fn radroots_event::admission::VisibilityPolicy::make_visible(&self, &radroots_event::admission::AdmittedEvent) -> core::result::Result<(), Self::Error>
+pub fn radroots_event::admission::VisibilityPolicy::policy_id(&self) -> &'static str
+pub mod radroots_event::calendar
+#[non_exhaustive] pub enum radroots_event::calendar::CalendarAdmissionError
+pub radroots_event::calendar::CalendarAdmissionError::AuthorHintMismatch
+pub radroots_event::calendar::CalendarAdmissionError::CoveredDayLimitExceeded
+pub radroots_event::calendar::CalendarAdmissionError::CoveredDayLimitExceeded::actual: u64
+pub radroots_event::calendar::CalendarAdmissionError::CoveredDayLimitExceeded::max: u64
+pub radroots_event::calendar::CalendarAdmissionError::DuplicateEventReference
+pub radroots_event::calendar::CalendarAdmissionError::ForbiddenDateDayIndex
+pub radroots_event::calendar::CalendarAdmissionError::IncompleteDayCoverage
+pub radroots_event::calendar::CalendarAdmissionError::NonBlossomImage
+pub radroots_event::calendar::CalendarAdmissionError::NonCanonicalField(&'static str)
+impl radroots_event::calendar::CalendarAdmissionError
+pub const fn radroots_event::calendar::CalendarAdmissionError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::calendar::CalendarAdmissionError
+impl core::fmt::Display for radroots_event::calendar::CalendarAdmissionError
+pub fn radroots_event::calendar::CalendarAdmissionError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub enum radroots_event::calendar::CalendarEventError
+pub radroots_event::calendar::CalendarEventError::AuthorHintMismatch
+pub radroots_event::calendar::CalendarEventError::ContentTooLarge
+pub radroots_event::calendar::CalendarEventError::ContentTooLarge::actual: usize
+pub radroots_event::calendar::CalendarEventError::ContentTooLarge::max: usize
+pub radroots_event::calendar::CalendarEventError::CoveredDayLimitExceeded
+pub radroots_event::calendar::CalendarEventError::CoveredDayLimitExceeded::actual: u64
+pub radroots_event::calendar::CalendarEventError::CoveredDayLimitExceeded::max: u64
+pub radroots_event::calendar::CalendarEventError::DeclinedFreeBusyForbidden
+pub radroots_event::calendar::CalendarEventError::DuplicateEventReference
+pub radroots_event::calendar::CalendarEventError::InvalidAuthorReference
+pub radroots_event::calendar::CalendarEventError::InvalidCalendarUid
+pub radroots_event::calendar::CalendarEventError::InvalidDate
+pub radroots_event::calendar::CalendarEventError::InvalidEventReference
+pub radroots_event::calendar::CalendarEventError::InvalidGeohash
+pub radroots_event::calendar::CalendarEventError::InvalidIdentifier
+pub radroots_event::calendar::CalendarEventError::InvalidParticipant
+pub radroots_event::calendar::CalendarEventError::InvalidParticipant::index: usize
+pub radroots_event::calendar::CalendarEventError::InvalidRange
+pub radroots_event::calendar::CalendarEventError::InvalidRevisionReference
+pub radroots_event::calendar::CalendarEventError::InvalidText(&'static str)
+pub radroots_event::calendar::CalendarEventError::InvalidTimeZone
+pub radroots_event::calendar::CalendarEventError::InvalidTitle
+pub radroots_event::calendar::CalendarEventError::InvalidUrl(&'static str)
+pub radroots_event::calendar::CalendarEventError::TagBytesExceeded
+pub radroots_event::calendar::CalendarEventError::TagBytesExceeded::actual: usize
+pub radroots_event::calendar::CalendarEventError::TagBytesExceeded::max: usize
+pub radroots_event::calendar::CalendarEventError::TagCountExceeded
+pub radroots_event::calendar::CalendarEventError::TagCountExceeded::actual: usize
+pub radroots_event::calendar::CalendarEventError::TagCountExceeded::max: usize
+pub radroots_event::calendar::CalendarEventError::TagElementTooLarge
+pub radroots_event::calendar::CalendarEventError::TagElementTooLarge::actual: usize
+pub radroots_event::calendar::CalendarEventError::TagElementTooLarge::field: &'static str
+pub radroots_event::calendar::CalendarEventError::TagElementTooLarge::max: usize
+pub radroots_event::calendar::CalendarEventError::TooManyParticipants
+pub radroots_event::calendar::CalendarEventError::TooManyParticipants::actual: usize
+pub radroots_event::calendar::CalendarEventError::TooManyParticipants::max: usize
+impl radroots_event::calendar::CalendarEventError
+pub const fn radroots_event::calendar::CalendarEventError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::calendar::CalendarEventError
+impl core::fmt::Display for radroots_event::calendar::CalendarEventError
+pub fn radroots_event::calendar::CalendarEventError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::calendar::CalendarEventFreeBusy
+pub radroots_event::calendar::CalendarEventFreeBusy::Busy
+pub radroots_event::calendar::CalendarEventFreeBusy::Free
+pub enum radroots_event::calendar::CalendarEventRsvpStatus
+pub radroots_event::calendar::CalendarEventRsvpStatus::Accepted
+pub radroots_event::calendar::CalendarEventRsvpStatus::Declined
+pub radroots_event::calendar::CalendarEventRsvpStatus::Tentative
+pub struct radroots_event::calendar::AdmittedCalendar
+impl radroots_event::calendar::AdmittedCalendar
+pub fn radroots_event::calendar::AdmittedCalendar::blossom_image(&self) -> core::option::Option<&radroots_blossom::url::BlobUrl>
+pub fn radroots_event::calendar::AdmittedCalendar::content(&self) -> &str
+pub fn radroots_event::calendar::AdmittedCalendar::event_references(&self) -> &[radroots_event::calendar::CalendarEventReference]
+pub fn radroots_event::calendar::AdmittedCalendar::list_description(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::AdmittedCalendar::parsed(&self) -> &radroots_event::calendar::ParsedNip52Calendar
+pub fn radroots_event::calendar::AdmittedCalendar::title(&self) -> &str
+pub fn radroots_event::calendar::AdmittedCalendar::try_from_parsed(radroots_event::calendar::ParsedNip52Calendar) -> core::result::Result<Self, radroots_event::calendar::CalendarAdmissionError>
+pub fn radroots_event::calendar::AdmittedCalendar::uid(&self) -> &radroots_event::calendar::CalendarUid
+pub struct radroots_event::calendar::AdmittedCalendarDateEvent
+impl radroots_event::calendar::AdmittedCalendarDateEvent
+pub fn radroots_event::calendar::AdmittedCalendarDateEvent::blossom_image(&self) -> core::option::Option<&radroots_blossom::url::BlobUrl>
+pub fn radroots_event::calendar::AdmittedCalendarDateEvent::d_tag(&self) -> &radroots_event::id::DTag
+pub fn radroots_event::calendar::AdmittedCalendarDateEvent::parsed(&self) -> &radroots_event::calendar::ParsedNip52CalendarDateEvent
+pub fn radroots_event::calendar::AdmittedCalendarDateEvent::try_from_parsed(radroots_event::calendar::ParsedNip52CalendarDateEvent) -> core::result::Result<Self, radroots_event::calendar::CalendarAdmissionError>
+pub struct radroots_event::calendar::AdmittedCalendarEventRsvp
+impl radroots_event::calendar::AdmittedCalendarEventRsvp
+pub fn radroots_event::calendar::AdmittedCalendarEventRsvp::author_hint(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventAuthorReference>
+pub fn radroots_event::calendar::AdmittedCalendarEventRsvp::effective_free_busy(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventFreeBusy>
+pub fn radroots_event::calendar::AdmittedCalendarEventRsvp::event_reference(&self) -> &radroots_event::calendar::CalendarEventReference
+pub fn radroots_event::calendar::AdmittedCalendarEventRsvp::note(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::AdmittedCalendarEventRsvp::observed_free_busy(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventFreeBusy>
+pub fn radroots_event::calendar::AdmittedCalendarEventRsvp::parsed(&self) -> &radroots_event::calendar::ParsedNip52CalendarEventRsvp
+pub fn radroots_event::calendar::AdmittedCalendarEventRsvp::revision_reference(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventRevisionReference>
+pub fn radroots_event::calendar::AdmittedCalendarEventRsvp::status(&self) -> &radroots_event::calendar::CalendarEventRsvpStatus
+pub fn radroots_event::calendar::AdmittedCalendarEventRsvp::try_from_parsed(radroots_event::calendar::ParsedNip52CalendarEventRsvp) -> core::result::Result<Self, radroots_event::calendar::CalendarAdmissionError>
+pub fn radroots_event::calendar::AdmittedCalendarEventRsvp::uid(&self) -> &radroots_event::calendar::CalendarUid
+pub struct radroots_event::calendar::AdmittedCalendarTimeEvent
+impl radroots_event::calendar::AdmittedCalendarTimeEvent
+pub fn radroots_event::calendar::AdmittedCalendarTimeEvent::blossom_image(&self) -> core::option::Option<&radroots_blossom::url::BlobUrl>
+pub fn radroots_event::calendar::AdmittedCalendarTimeEvent::covered_utc_days(&self) -> &[u64]
+pub fn radroots_event::calendar::AdmittedCalendarTimeEvent::d_tag(&self) -> &radroots_event::id::DTag
+pub fn radroots_event::calendar::AdmittedCalendarTimeEvent::parsed(&self) -> &radroots_event::calendar::ParsedNip52CalendarTimeEvent
+pub fn radroots_event::calendar::AdmittedCalendarTimeEvent::try_from_parsed(radroots_event::calendar::ParsedNip52CalendarTimeEvent) -> core::result::Result<Self, radroots_event::calendar::CalendarAdmissionError>
+pub struct radroots_event::calendar::AuthoredCalendar
+impl radroots_event::calendar::AuthoredCalendar
+pub fn radroots_event::calendar::AuthoredCalendar::content(&self) -> &str
+pub fn radroots_event::calendar::AuthoredCalendar::event_references(&self) -> &[radroots_event::calendar::CalendarEventReference]
+pub fn radroots_event::calendar::AuthoredCalendar::image(&self) -> core::option::Option<&radroots_event::media::AuthoredImage>
+pub fn radroots_event::calendar::AuthoredCalendar::list_description(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::AuthoredCalendar::new(radroots_event::calendar::CalendarUid, impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>, alloc::vec::Vec<radroots_event::calendar::CalendarEventReference>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendar::title(&self) -> &str
+pub fn radroots_event::calendar::AuthoredCalendar::uid(&self) -> &radroots_event::calendar::CalendarUid
+pub fn radroots_event::calendar::AuthoredCalendar::with_image(self, radroots_event::media::AuthoredImage) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendar::with_list_description(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub struct radroots_event::calendar::AuthoredCalendarDateEvent
+impl radroots_event::calendar::AuthoredCalendarDateEvent
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::calendar_requests(&self) -> &[radroots_event::calendar::CalendarRequest]
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::categories(&self) -> &[alloc::string::String]
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::d_tag(&self) -> &radroots_event::id::DTag
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::description(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::end(&self) -> core::option::Option<&radroots_event::calendar::CalendarDate>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::geohash(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::image(&self) -> core::option::Option<&radroots_event::media::AuthoredImage>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::locations(&self) -> &[alloc::string::String]
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::new(impl core::convert::AsRef<str>, impl core::convert::Into<alloc::string::String>, radroots_event::calendar::CalendarDate) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::participants(&self) -> core::option::Option<&alloc::vec::Vec<radroots_event::calendar::CalendarParticipant>>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::references(&self) -> &[radroots_event::calendar::CalendarUri]
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::start(&self) -> &radroots_event::calendar::CalendarDate
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::summary(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::title(&self) -> &str
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::with_calendar_requests(self, alloc::vec::Vec<radroots_event::calendar::CalendarRequest>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::with_categories(self, alloc::vec::Vec<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::with_description(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::with_end(self, radroots_event::calendar::CalendarDate) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::with_geohash(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::with_image(self, radroots_event::media::AuthoredImage) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::with_locations(self, alloc::vec::Vec<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::with_participants(self, alloc::vec::Vec<radroots_event::calendar::CalendarParticipant>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::with_references(self, alloc::vec::Vec<radroots_event::calendar::CalendarUri>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarDateEvent::with_summary(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub struct radroots_event::calendar::AuthoredCalendarEventRsvp
+impl radroots_event::calendar::AuthoredCalendarEventRsvp
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::author_hint(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventAuthorReference>
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::effective_free_busy(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventFreeBusy>
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::event_reference(&self) -> &radroots_event::calendar::CalendarEventReference
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::new(radroots_event::calendar::CalendarUid, radroots_event::calendar::CalendarEventReference, radroots_event::calendar::CalendarEventRsvpStatus) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::note(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::observed_free_busy(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventFreeBusy>
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::revision_reference(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventRevisionReference>
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::status(&self) -> &radroots_event::calendar::CalendarEventRsvpStatus
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::uid(&self) -> &radroots_event::calendar::CalendarUid
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::with_author_hint(self, radroots_event::calendar::CalendarEventAuthorReference) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::with_free_busy(self, radroots_event::calendar::CalendarEventFreeBusy) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::with_note(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarEventRsvp::with_revision_reference(self, radroots_event::calendar::CalendarEventRevisionReference) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub struct radroots_event::calendar::AuthoredCalendarTimeEvent
+impl radroots_event::calendar::AuthoredCalendarTimeEvent
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::calendar_requests(&self) -> &[radroots_event::calendar::CalendarRequest]
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::categories(&self) -> &[alloc::string::String]
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::d_tag(&self) -> &radroots_event::id::DTag
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::description(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::effective_end_tzid(&self) -> core::option::Option<&radroots_event::calendar::IanaTimeZoneId>
+pub const fn radroots_event::calendar::AuthoredCalendarTimeEvent::end(&self) -> core::option::Option<u64>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::end_tzid(&self) -> core::option::Option<&radroots_event::calendar::IanaTimeZoneId>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::geohash(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::image(&self) -> core::option::Option<&radroots_event::media::AuthoredImage>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::locations(&self) -> &[alloc::string::String]
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::new(impl core::convert::AsRef<str>, impl core::convert::Into<alloc::string::String>, u64) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::participants(&self) -> core::option::Option<&alloc::vec::Vec<radroots_event::calendar::CalendarParticipant>>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::references(&self) -> &[radroots_event::calendar::CalendarUri]
+pub const fn radroots_event::calendar::AuthoredCalendarTimeEvent::start(&self) -> u64
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::start_tzid(&self) -> core::option::Option<&radroots_event::calendar::IanaTimeZoneId>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::summary(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::title(&self) -> &str
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_calendar_requests(self, alloc::vec::Vec<radroots_event::calendar::CalendarRequest>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_categories(self, alloc::vec::Vec<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_description(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_end(self, u64) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_end_tzid(self, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_geohash(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_image(self, radroots_event::media::AuthoredImage) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_locations(self, alloc::vec::Vec<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_participants(self, alloc::vec::Vec<radroots_event::calendar::CalendarParticipant>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_references(self, alloc::vec::Vec<radroots_event::calendar::CalendarUri>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_start_tzid(self, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::AuthoredCalendarTimeEvent::with_summary(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub struct radroots_event::calendar::CalendarDate(_)
+impl radroots_event::calendar::CalendarDate
+pub fn radroots_event::calendar::CalendarDate::as_str(&self) -> &str
+pub fn radroots_event::calendar::CalendarDate::parse(&str) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+impl core::convert::AsRef<str> for radroots_event::calendar::CalendarDate
+pub fn radroots_event::calendar::CalendarDate::as_ref(&self) -> &str
+impl core::fmt::Display for radroots_event::calendar::CalendarDate
+pub fn radroots_event::calendar::CalendarDate::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::calendar::CalendarDate
+pub type radroots_event::calendar::CalendarDate::Err = radroots_event::calendar::CalendarEventError
+pub fn radroots_event::calendar::CalendarDate::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::calendar::CalendarDate
+pub fn radroots_event::calendar::CalendarDate::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_event::calendar::CalendarDate
+pub fn radroots_event::calendar::CalendarDate::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::calendar::CalendarEventAuthorReference
+impl radroots_event::calendar::CalendarEventAuthorReference
+pub fn radroots_event::calendar::CalendarEventAuthorReference::is_canonical(&self) -> bool
+pub fn radroots_event::calendar::CalendarEventAuthorReference::parse(impl core::convert::AsRef<str>, core::option::Option<&str>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::CalendarEventAuthorReference::pubkey(&self) -> &radroots_identity::key::PublicKey
+pub fn radroots_event::calendar::CalendarEventAuthorReference::raw_pubkey(&self) -> &str
+pub fn radroots_event::calendar::CalendarEventAuthorReference::relay(&self) -> core::option::Option<&str>
+pub struct radroots_event::calendar::CalendarEventReference
+impl radroots_event::calendar::CalendarEventReference
+pub fn radroots_event::calendar::CalendarEventReference::author(&self) -> &radroots_identity::key::PublicKey
+pub fn radroots_event::calendar::CalendarEventReference::coordinate(&self) -> &radroots_event::id::AddressableCoordinate
+pub fn radroots_event::calendar::CalendarEventReference::d_tag(&self) -> &radroots_event::id::DTag
+pub fn radroots_event::calendar::CalendarEventReference::is_canonical(&self) -> bool
+pub const fn radroots_event::calendar::CalendarEventReference::kind(&self) -> u32
+pub fn radroots_event::calendar::CalendarEventReference::parse(impl core::convert::AsRef<str>, core::option::Option<&str>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::CalendarEventReference::relay(&self) -> core::option::Option<&str>
+pub struct radroots_event::calendar::CalendarEventRevisionReference
+impl radroots_event::calendar::CalendarEventRevisionReference
+pub fn radroots_event::calendar::CalendarEventRevisionReference::event_id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event::calendar::CalendarEventRevisionReference::is_canonical(&self) -> bool
+pub fn radroots_event::calendar::CalendarEventRevisionReference::parse(impl core::convert::AsRef<str>, core::option::Option<&str>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::CalendarEventRevisionReference::raw_event_id(&self) -> &str
+pub fn radroots_event::calendar::CalendarEventRevisionReference::relay(&self) -> core::option::Option<&str>
+pub struct radroots_event::calendar::CalendarParticipant
+pub radroots_event::calendar::CalendarParticipant::pubkey: alloc::string::String
+pub radroots_event::calendar::CalendarParticipant::relay: core::option::Option<alloc::string::String>
+pub radroots_event::calendar::CalendarParticipant::role: core::option::Option<alloc::string::String>
+pub struct radroots_event::calendar::CalendarRequest
+impl radroots_event::calendar::CalendarRequest
+pub fn radroots_event::calendar::CalendarRequest::calendar(&self) -> &radroots_event::id::AddressableCoordinate
+pub fn radroots_event::calendar::CalendarRequest::is_canonical(&self) -> bool
+pub fn radroots_event::calendar::CalendarRequest::new(impl core::convert::AsRef<str>, core::option::Option<&str>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::CalendarRequest::relay(&self) -> core::option::Option<&str>
+pub struct radroots_event::calendar::CalendarUid(_)
+impl radroots_event::calendar::CalendarUid
+pub fn radroots_event::calendar::CalendarUid::as_str(&self) -> &str
+pub fn radroots_event::calendar::CalendarUid::into_string(self) -> alloc::string::String
+pub fn radroots_event::calendar::CalendarUid::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+impl core::convert::AsRef<str> for radroots_event::calendar::CalendarUid
+pub fn radroots_event::calendar::CalendarUid::as_ref(&self) -> &str
+impl core::convert::TryFrom<&str> for radroots_event::calendar::CalendarUid
+pub type radroots_event::calendar::CalendarUid::Error = radroots_event::calendar::CalendarEventError
+pub fn radroots_event::calendar::CalendarUid::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::calendar::CalendarUid
+pub type radroots_event::calendar::CalendarUid::Error = radroots_event::calendar::CalendarEventError
+pub fn radroots_event::calendar::CalendarUid::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::calendar::CalendarUid
+pub fn radroots_event::calendar::CalendarUid::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::calendar::CalendarUid
+pub type radroots_event::calendar::CalendarUid::Err = radroots_event::calendar::CalendarEventError
+pub fn radroots_event::calendar::CalendarUid::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::calendar::CalendarUid
+pub fn radroots_event::calendar::CalendarUid::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
+pub struct radroots_event::calendar::CalendarUri(_)
+impl radroots_event::calendar::CalendarUri
+pub fn radroots_event::calendar::CalendarUri::as_str(&self) -> &str
+pub fn radroots_event::calendar::CalendarUri::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+impl core::convert::AsRef<str> for radroots_event::calendar::CalendarUri
+pub fn radroots_event::calendar::CalendarUri::as_ref(&self) -> &str
+impl core::fmt::Display for radroots_event::calendar::CalendarUri
+pub fn radroots_event::calendar::CalendarUri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::calendar::CalendarUri
+pub type radroots_event::calendar::CalendarUri::Err = radroots_event::calendar::CalendarEventError
+pub fn radroots_event::calendar::CalendarUri::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::calendar::CalendarUri
+pub fn radroots_event::calendar::CalendarUri::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_event::calendar::CalendarUri
+pub fn radroots_event::calendar::CalendarUri::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::calendar::IanaTimeZoneId(_)
+impl radroots_event::calendar::IanaTimeZoneId
+pub fn radroots_event::calendar::IanaTimeZoneId::as_str(&self) -> &str
+pub fn radroots_event::calendar::IanaTimeZoneId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+impl core::convert::AsRef<str> for radroots_event::calendar::IanaTimeZoneId
+pub fn radroots_event::calendar::IanaTimeZoneId::as_ref(&self) -> &str
+impl core::fmt::Display for radroots_event::calendar::IanaTimeZoneId
+pub fn radroots_event::calendar::IanaTimeZoneId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::calendar::IanaTimeZoneId
+pub type radroots_event::calendar::IanaTimeZoneId::Err = radroots_event::calendar::CalendarEventError
+pub fn radroots_event::calendar::IanaTimeZoneId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::calendar::IanaTimeZoneId
+pub fn radroots_event::calendar::IanaTimeZoneId::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_event::calendar::IanaTimeZoneId
+pub fn radroots_event::calendar::IanaTimeZoneId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::calendar::ObservedUtcDay
+impl radroots_event::calendar::ObservedUtcDay
+pub const fn radroots_event::calendar::ObservedUtcDay::index(&self) -> u64
+pub fn radroots_event::calendar::ObservedUtcDay::is_canonical(&self) -> bool
+pub fn radroots_event::calendar::ObservedUtcDay::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub fn radroots_event::calendar::ObservedUtcDay::wire_value(&self) -> &str
+pub struct radroots_event::calendar::ParsedNip52Calendar
+impl radroots_event::calendar::ParsedNip52Calendar
+pub fn radroots_event::calendar::ParsedNip52Calendar::content(&self) -> &str
+pub fn radroots_event::calendar::ParsedNip52Calendar::d_tag(&self) -> &str
+pub fn radroots_event::calendar::ParsedNip52Calendar::event_references(&self) -> &[radroots_event::calendar::CalendarEventReference]
+pub fn radroots_event::calendar::ParsedNip52Calendar::image(&self) -> core::option::Option<&radroots_event::calendar::CalendarUri>
+pub fn radroots_event::calendar::ParsedNip52Calendar::list_description(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::ParsedNip52Calendar::title(&self) -> &str
+pub fn radroots_event::calendar::ParsedNip52Calendar::try_new(radroots_event::calendar::ParsedNip52CalendarParts) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub struct radroots_event::calendar::ParsedNip52CalendarCommon
+impl radroots_event::calendar::ParsedNip52CalendarCommon
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::calendar_requests(&self) -> &[radroots_event::calendar::CalendarRequest]
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::categories(&self) -> &[alloc::string::String]
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::d_tag(&self) -> &str
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::description(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::geohash(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::image(&self) -> core::option::Option<&radroots_event::calendar::CalendarUri>
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::legacy_name(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::locations(&self) -> &[alloc::string::String]
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::participants(&self) -> &[radroots_event::calendar::CalendarParticipant]
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::references(&self) -> &[radroots_event::calendar::CalendarUri]
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::summary(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::title(&self) -> &str
+pub fn radroots_event::calendar::ParsedNip52CalendarCommon::try_new(radroots_event::calendar::ParsedNip52CalendarCommonParts) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub struct radroots_event::calendar::ParsedNip52CalendarCommonParts
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::calendar_requests: alloc::vec::Vec<radroots_event::calendar::CalendarRequest>
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::categories: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::d_tag: alloc::string::String
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::description: core::option::Option<alloc::string::String>
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::geohash: core::option::Option<alloc::string::String>
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::image: core::option::Option<radroots_event::calendar::CalendarUri>
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::legacy_name: core::option::Option<alloc::string::String>
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::locations: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::participants: alloc::vec::Vec<radroots_event::calendar::CalendarParticipant>
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::references: alloc::vec::Vec<radroots_event::calendar::CalendarUri>
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::summary: core::option::Option<alloc::string::String>
+pub radroots_event::calendar::ParsedNip52CalendarCommonParts::title: alloc::string::String
+pub struct radroots_event::calendar::ParsedNip52CalendarDateEvent
+impl radroots_event::calendar::ParsedNip52CalendarDateEvent
+pub fn radroots_event::calendar::ParsedNip52CalendarDateEvent::common(&self) -> &radroots_event::calendar::ParsedNip52CalendarCommon
+pub fn radroots_event::calendar::ParsedNip52CalendarDateEvent::end(&self) -> core::option::Option<&radroots_event::calendar::CalendarDate>
+pub fn radroots_event::calendar::ParsedNip52CalendarDateEvent::extension_day_tags(&self) -> &[alloc::vec::Vec<alloc::string::String>]
+pub fn radroots_event::calendar::ParsedNip52CalendarDateEvent::start(&self) -> &radroots_event::calendar::CalendarDate
+pub fn radroots_event::calendar::ParsedNip52CalendarDateEvent::try_new(radroots_event::calendar::ParsedNip52CalendarCommon, radroots_event::calendar::CalendarDate, core::option::Option<radroots_event::calendar::CalendarDate>, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub struct radroots_event::calendar::ParsedNip52CalendarEventRsvp
+impl radroots_event::calendar::ParsedNip52CalendarEventRsvp
+pub fn radroots_event::calendar::ParsedNip52CalendarEventRsvp::author_hint(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventAuthorReference>
+pub fn radroots_event::calendar::ParsedNip52CalendarEventRsvp::d_tag(&self) -> &str
+pub fn radroots_event::calendar::ParsedNip52CalendarEventRsvp::effective_free_busy(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventFreeBusy>
+pub fn radroots_event::calendar::ParsedNip52CalendarEventRsvp::event_reference(&self) -> &radroots_event::calendar::CalendarEventReference
+pub fn radroots_event::calendar::ParsedNip52CalendarEventRsvp::note(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::ParsedNip52CalendarEventRsvp::observed_free_busy(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventFreeBusy>
+pub fn radroots_event::calendar::ParsedNip52CalendarEventRsvp::revision_reference(&self) -> core::option::Option<&radroots_event::calendar::CalendarEventRevisionReference>
+pub fn radroots_event::calendar::ParsedNip52CalendarEventRsvp::status(&self) -> &radroots_event::calendar::CalendarEventRsvpStatus
+pub fn radroots_event::calendar::ParsedNip52CalendarEventRsvp::try_new(radroots_event::calendar::ParsedNip52CalendarEventRsvpParts) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub struct radroots_event::calendar::ParsedNip52CalendarEventRsvpParts
+pub radroots_event::calendar::ParsedNip52CalendarEventRsvpParts::author_hint: core::option::Option<radroots_event::calendar::CalendarEventAuthorReference>
+pub radroots_event::calendar::ParsedNip52CalendarEventRsvpParts::d_tag: alloc::string::String
+pub radroots_event::calendar::ParsedNip52CalendarEventRsvpParts::event_reference: radroots_event::calendar::CalendarEventReference
+pub radroots_event::calendar::ParsedNip52CalendarEventRsvpParts::note: core::option::Option<alloc::string::String>
+pub radroots_event::calendar::ParsedNip52CalendarEventRsvpParts::observed_free_busy: core::option::Option<radroots_event::calendar::CalendarEventFreeBusy>
+pub radroots_event::calendar::ParsedNip52CalendarEventRsvpParts::revision_reference: core::option::Option<radroots_event::calendar::CalendarEventRevisionReference>
+pub radroots_event::calendar::ParsedNip52CalendarEventRsvpParts::status: radroots_event::calendar::CalendarEventRsvpStatus
+pub struct radroots_event::calendar::ParsedNip52CalendarParts
+pub radroots_event::calendar::ParsedNip52CalendarParts::content: alloc::string::String
+pub radroots_event::calendar::ParsedNip52CalendarParts::d_tag: alloc::string::String
+pub radroots_event::calendar::ParsedNip52CalendarParts::event_references: alloc::vec::Vec<radroots_event::calendar::CalendarEventReference>
+pub radroots_event::calendar::ParsedNip52CalendarParts::image: core::option::Option<radroots_event::calendar::CalendarUri>
+pub radroots_event::calendar::ParsedNip52CalendarParts::list_description: core::option::Option<alloc::string::String>
+pub radroots_event::calendar::ParsedNip52CalendarParts::title: alloc::string::String
+pub struct radroots_event::calendar::ParsedNip52CalendarTimeEvent
+impl radroots_event::calendar::ParsedNip52CalendarTimeEvent
+pub fn radroots_event::calendar::ParsedNip52CalendarTimeEvent::common(&self) -> &radroots_event::calendar::ParsedNip52CalendarCommon
+pub fn radroots_event::calendar::ParsedNip52CalendarTimeEvent::effective_end_tzid(&self) -> core::option::Option<&radroots_event::calendar::IanaTimeZoneId>
+pub const fn radroots_event::calendar::ParsedNip52CalendarTimeEvent::end(&self) -> core::option::Option<u64>
+pub fn radroots_event::calendar::ParsedNip52CalendarTimeEvent::end_tzid(&self) -> core::option::Option<&radroots_event::calendar::IanaTimeZoneId>
+pub fn radroots_event::calendar::ParsedNip52CalendarTimeEvent::end_wire(&self) -> core::option::Option<&str>
+pub fn radroots_event::calendar::ParsedNip52CalendarTimeEvent::observed_day_indices(&self) -> &[radroots_event::calendar::ObservedUtcDay]
+pub const fn radroots_event::calendar::ParsedNip52CalendarTimeEvent::start(&self) -> u64
+pub fn radroots_event::calendar::ParsedNip52CalendarTimeEvent::start_tzid(&self) -> core::option::Option<&radroots_event::calendar::IanaTimeZoneId>
+pub fn radroots_event::calendar::ParsedNip52CalendarTimeEvent::start_wire(&self) -> &str
+pub fn radroots_event::calendar::ParsedNip52CalendarTimeEvent::try_new(radroots_event::calendar::ParsedNip52CalendarCommon, alloc::string::String, u64, core::option::Option<alloc::string::String>, core::option::Option<u64>, alloc::vec::Vec<radroots_event::calendar::ObservedUtcDay>, core::option::Option<radroots_event::calendar::IanaTimeZoneId>, core::option::Option<radroots_event::calendar::IanaTimeZoneId>) -> core::result::Result<Self, radroots_event::calendar::CalendarEventError>
+pub const radroots_event::calendar::RADROOTS_CALENDAR_MAX_COVERED_UTC_DAYS: u64
+pub const radroots_event::calendar::RADROOTS_CALENDAR_MAX_PARTICIPANTS: usize
+pub const radroots_event::calendar::RADROOTS_CALENDAR_SECONDS_PER_DAY: u64
+pub fn radroots_event::calendar::calendar_geohash_is_valid(&str) -> bool
+pub fn radroots_event::calendar::calendar_relay_url_is_valid(&str) -> bool
+pub fn radroots_event::calendar::calendar_tag_text_is_valid(&str) -> bool
+pub fn radroots_event::calendar::canonical_calendar_geohash_is_valid(&str) -> bool
+pub fn radroots_event::calendar::canonical_calendar_tag_text_is_valid(&str) -> bool
+pub fn radroots_event::calendar::covered_utc_days(u64, core::option::Option<u64>) -> core::result::Result<core::ops::range::RangeInclusive<u64>, radroots_event::calendar::CalendarEventError>
+pub mod radroots_event::contract
+pub enum radroots_event::contract::ContractIdentityError
+pub radroots_event::contract::ContractIdentityError::ContractIdMissing
+pub radroots_event::contract::ContractIdentityError::ContractIdNamespace
+pub radroots_event::contract::ContractIdentityError::ContractIdSyntax
+pub radroots_event::contract::ContractIdentityError::ContractIdTooLong
+pub radroots_event::contract::ContractIdentityError::ContractIdTooLong::actual: usize
+pub radroots_event::contract::ContractIdentityError::ContractIdTooLong::max: usize
+pub radroots_event::contract::ContractIdentityError::RegistryVersionZero
+pub radroots_event::contract::ContractIdentityError::UnknownContract
+pub radroots_event::contract::ContractIdentityError::UnknownContract::contract_id: alloc::string::String
+pub radroots_event::contract::ContractIdentityError::UnsupportedRegistryVersion
+pub radroots_event::contract::ContractIdentityError::UnsupportedRegistryVersion::actual: u32
+impl radroots_event::contract::ContractIdentityError
+pub const fn radroots_event::contract::ContractIdentityError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::contract::ContractIdentityError
+impl core::fmt::Display for radroots_event::contract::ContractIdentityError
+pub fn radroots_event::contract::ContractIdentityError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::contract::ContractId(_)
+impl radroots_event::contract::ContractId
+pub fn radroots_event::contract::ContractId::as_str(&self) -> &str
+pub fn radroots_event::contract::ContractId::into_string(self) -> alloc::string::String
+pub fn radroots_event::contract::ContractId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::contract::ContractIdentityError>
+impl core::fmt::Display for radroots_event::contract::ContractId
+pub fn radroots_event::contract::ContractId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_event::contract::ContractId
+pub fn radroots_event::contract::ContractId::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_event::contract::ContractId
+pub fn radroots_event::contract::ContractId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::contract::ContractKey
+impl radroots_event::contract::ContractKey
+pub fn radroots_event::contract::ContractKey::contract(&self) -> &'static EventContract
+pub const fn radroots_event::contract::ContractKey::contract_id(&self) -> &radroots_event::contract::ContractId
+pub fn radroots_event::contract::ContractKey::current(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::contract::ContractIdentityError>
+pub fn radroots_event::contract::ContractKey::new(radroots_event::contract::RegistryVersion, radroots_event::contract::ContractId) -> core::result::Result<Self, radroots_event::contract::ContractIdentityError>
+pub const fn radroots_event::contract::ContractKey::registry_version(&self) -> radroots_event::contract::RegistryVersion
+impl serde_core::ser::Serialize for radroots_event::contract::ContractKey
+pub fn radroots_event::contract::ContractKey::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_event::contract::ContractKey
+pub fn radroots_event::contract::ContractKey::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::contract::RegistryVersion(_)
+impl radroots_event::contract::RegistryVersion
+pub const radroots_event::contract::RegistryVersion::CURRENT: Self
+pub const radroots_event::contract::RegistryVersion::V7: Self
+pub const fn radroots_event::contract::RegistryVersion::get(self) -> u32
+pub const fn radroots_event::contract::RegistryVersion::new(u32) -> core::result::Result<Self, radroots_event::contract::ContractIdentityError>
+impl core::fmt::Display for radroots_event::contract::RegistryVersion
+pub fn radroots_event::contract::RegistryVersion::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_event::contract::RegistryVersion
+pub fn radroots_event::contract::RegistryVersion::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_event::contract::RegistryVersion
+pub fn radroots_event::contract::RegistryVersion::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub const radroots_event::contract::CONTRACT_ID_MAX_BYTES: usize
+pub const radroots_event::contract::VERSION: &str
+pub mod radroots_event::draft
+pub enum radroots_event::draft::DraftError
+pub radroots_event::draft::DraftError::CanonicalEventId(crate::wire::v1::CanonicalEventIdError)
+pub radroots_event::draft::DraftError::ContractKindMismatch
+pub radroots_event::draft::DraftError::ContractKindMismatch::actual_kind: u32
+pub radroots_event::draft::DraftError::ContractKindMismatch::contract_id: alloc::string::String
+pub radroots_event::draft::DraftError::ContractKindMismatch::expected_kind: u32
+pub radroots_event::draft::DraftError::ContractNotDraftAuthorable
+pub radroots_event::draft::DraftError::ContractNotDraftAuthorable::contract_id: alloc::string::String
+pub radroots_event::draft::DraftError::ContractRegistryVersionMismatch
+pub radroots_event::draft::DraftError::ContractRegistryVersionMismatch::actual: u32
+pub radroots_event::draft::DraftError::ContractRegistryVersionMismatch::expected: u32
+pub radroots_event::draft::DraftError::ContractShape
+pub radroots_event::draft::DraftError::ContractShape::contract_id: alloc::string::String
+pub radroots_event::draft::DraftError::ContractShape::error: crate::contract::registry_v7::ContractValidationError
+pub radroots_event::draft::DraftError::DraftExpectedEventIdMismatch
+pub radroots_event::draft::DraftError::DraftExpectedEventIdMismatch::actual_event_id: alloc::string::String
+pub radroots_event::draft::DraftError::DraftExpectedEventIdMismatch::expected_event_id: alloc::string::String
+pub radroots_event::draft::DraftError::Envelope(radroots_event::envelope::EventEnvelopeError)
+pub radroots_event::draft::DraftError::IdParse(radroots_event::id::ParseError)
+pub radroots_event::draft::DraftError::SignedEvent(radroots_event::draft::SignedEventError)
+pub radroots_event::draft::DraftError::UnknownContract(alloc::string::String)
+impl core::convert::From<radroots_event::draft::SignedEventError> for radroots_event::draft::DraftError
+pub fn radroots_event::draft::DraftError::from(radroots_event::draft::SignedEventError) -> Self
+impl core::convert::From<radroots_event::envelope::EventEnvelopeError> for radroots_event::draft::DraftError
+pub fn radroots_event::draft::DraftError::from(radroots_event::envelope::EventEnvelopeError) -> Self
+impl core::convert::From<radroots_event::id::ParseError> for radroots_event::draft::DraftError
+pub fn radroots_event::draft::DraftError::from(radroots_event::id::ParseError) -> Self
+impl core::error::Error for radroots_event::draft::DraftError
+impl core::fmt::Display for radroots_event::draft::DraftError
+pub fn radroots_event::draft::DraftError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::draft::SignedEventError
+pub radroots_event::draft::SignedEventError::Envelope(radroots_event::envelope::EventEnvelopeError)
+pub radroots_event::draft::SignedEventError::RawJson(crate::wire::v1::EventWireError)
+pub radroots_event::draft::SignedEventError::RawJsonMismatch
+pub radroots_event::draft::SignedEventError::Wire(crate::wire::v1::EventWireError)
+impl core::convert::From<radroots_event::draft::SignedEventError> for radroots_event::draft::DraftError
+pub fn radroots_event::draft::DraftError::from(radroots_event::draft::SignedEventError) -> Self
+impl core::convert::From<radroots_event::envelope::EventEnvelopeError> for radroots_event::draft::SignedEventError
+pub fn radroots_event::draft::SignedEventError::from(radroots_event::envelope::EventEnvelopeError) -> Self
+impl core::error::Error for radroots_event::draft::SignedEventError
+impl core::fmt::Display for radroots_event::draft::SignedEventError
+pub fn radroots_event::draft::SignedEventError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::draft::SignedEvent
+impl radroots_event::draft::SignedEvent
+pub fn radroots_event::draft::SignedEvent::content(&self) -> &str
+pub fn radroots_event::draft::SignedEvent::created_at(&self) -> u64
+pub fn radroots_event::draft::SignedEvent::envelope(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event::draft::SignedEvent::from_wire_verified_id(Nip01EventWire, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::draft::SignedEventError>
+pub fn radroots_event::draft::SignedEvent::id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event::draft::SignedEvent::id_hex(&self) -> alloc::string::String
+pub fn radroots_event::draft::SignedEvent::id_str(&self) -> &str
+pub fn radroots_event::draft::SignedEvent::kind(&self) -> u32
+pub fn radroots_event::draft::SignedEvent::new(radroots_event::draft::SignedEventParts) -> core::result::Result<Self, radroots_event::draft::SignedEventError>
+pub fn radroots_event::draft::SignedEvent::pubkey(&self) -> &radroots_identity::key::PublicKey
+pub fn radroots_event::draft::SignedEvent::raw_json(&self) -> &str
+pub fn radroots_event::draft::SignedEvent::sig(&self) -> &radroots_event::id::EventSignature
+pub fn radroots_event::draft::SignedEvent::sig_str(&self) -> &str
+pub fn radroots_event::draft::SignedEvent::signature_hex(&self) -> alloc::string::String
+pub fn radroots_event::draft::SignedEvent::tags_as_vec(&self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event::draft::SignedEvent::wire(&self) -> &Nip01EventWire
+impl serde_core::ser::Serialize for radroots_event::draft::SignedEvent
+pub fn radroots_event::draft::SignedEvent::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_event::draft::SignedEvent
+pub fn radroots_event::draft::SignedEvent::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::draft::SignedEventParts
+pub radroots_event::draft::SignedEventParts::content: alloc::string::String
+pub radroots_event::draft::SignedEventParts::created_at: u64
+pub radroots_event::draft::SignedEventParts::id: alloc::string::String
+pub radroots_event::draft::SignedEventParts::kind: u32
+pub radroots_event::draft::SignedEventParts::pubkey: alloc::string::String
+pub radroots_event::draft::SignedEventParts::raw_json: alloc::string::String
+pub radroots_event::draft::SignedEventParts::sig: alloc::string::String
+pub radroots_event::draft::SignedEventParts::tags: alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event::draft::compute_nip01_event_id(&str, u64, u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::id::EventId, radroots_event::draft::DraftError>
+pub fn radroots_event::draft::nip01_event_id_preimage(&str, u64, u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<alloc::string::String, radroots_event::draft::DraftError>
+pub mod radroots_event::envelope
+pub mod radroots_event::envelope::event_head
+pub mod radroots_event::envelope::kind
+pub const radroots_event::envelope::kind::CLASSIFIED_LISTING_EVENT_KINDS: [u32; 1]
+pub const radroots_event::envelope::kind::COMMERCIAL_EVENT_KINDS: [u32; 7]
+pub const radroots_event::envelope::kind::EVENTS_CANDIDATE_KINDS: [u32; 4]
+pub const radroots_event::envelope::kind::HOME_FEED_CANDIDATE_KINDS: [u32; 9]
+pub const radroots_event::envelope::kind::KIND_ACCOUNT_CLAIM: u32
+pub const radroots_event::envelope::kind::KIND_APPLICATION_HANDLER: u32
+pub const radroots_event::envelope::kind::KIND_APP_CUSTOM_DATA: u32
+pub const radroots_event::envelope::kind::KIND_APP_DATA: u32
+pub const radroots_event::envelope::kind::KIND_ARTICLE: u32
+pub const radroots_event::envelope::kind::KIND_CALENDAR: u32
+pub const radroots_event::envelope::kind::KIND_CALENDAR_DATE_EVENT: u32
+pub const radroots_event::envelope::kind::KIND_CALENDAR_EVENT_RSVP: u32
+pub const radroots_event::envelope::kind::KIND_CALENDAR_TIME_EVENT: u32
+pub const radroots_event::envelope::kind::KIND_CLASSIFIED_LISTING: u32
+pub const radroots_event::envelope::kind::KIND_COMMENT: u32
+pub const radroots_event::envelope::kind::KIND_CONTRIBUTION_ATTESTATION: u32
+pub const radroots_event::envelope::kind::KIND_COOP: u32
+pub const radroots_event::envelope::kind::KIND_DELETION_REQUEST: u32
+pub const radroots_event::envelope::kind::KIND_DOCUMENT: u32
+pub const radroots_event::envelope::kind::KIND_EVIDENCE_BOUNTY: u32
+pub const radroots_event::envelope::kind::KIND_FARM: u32
+pub const radroots_event::envelope::kind::KIND_FARM_CRDT_CHANGE: u32
+pub const radroots_event::envelope::kind::KIND_FARM_FILE_METADATA: u32
+pub const radroots_event::envelope::kind::KIND_FARM_WORKSPACE_MANIFEST: u32
+pub const radroots_event::envelope::kind::KIND_FILE_METADATA: u32
+pub const radroots_event::envelope::kind::KIND_FOLLOW: u32
+pub const radroots_event::envelope::kind::KIND_GENERIC_REPOST: u32
+pub const radroots_event::envelope::kind::KIND_GEOCHAT: u32
+pub const radroots_event::envelope::kind::KIND_GIFT_WRAP: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_ADMINS: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_CREATE_GROUP: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_CREATE_INVITE: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_DELETE_EVENT: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_DELETE_GROUP: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_EDIT_METADATA: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_JOIN_REQUEST: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_LEAVE_REQUEST: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_MEMBERS: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_METADATA: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_PUT_USER: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_REMOVE_USER: u32
+pub const radroots_event::envelope::kind::KIND_GROUP_ROLES: u32
+pub const radroots_event::envelope::kind::KIND_HTTP_AUTH: u32
+pub const radroots_event::envelope::kind::KIND_JOB_FEEDBACK: u32
+pub const radroots_event::envelope::kind::KIND_JOB_REQUEST_MAX: u32
+pub const radroots_event::envelope::kind::KIND_JOB_REQUEST_MIN: u32
+pub const radroots_event::envelope::kind::KIND_JOB_RESULT_MAX: u32
+pub const radroots_event::envelope::kind::KIND_JOB_RESULT_MIN: u32
+pub const radroots_event::envelope::kind::KIND_KNOWLEDGE_CHANGE_PROPOSAL: u32
+pub const radroots_event::envelope::kind::KIND_KNOWLEDGE_CLAIM: u32
+pub const radroots_event::envelope::kind::KIND_KNOWLEDGE_FIELD_REPORT: u32
+pub const radroots_event::envelope::kind::KIND_KNOWLEDGE_RELATION: u32
+pub const radroots_event::envelope::kind::KIND_KNOWLEDGE_REVIEW: u32
+pub const radroots_event::envelope::kind::KIND_KNOWLEDGE_SOURCE: u32
+pub const radroots_event::envelope::kind::KIND_LIST_BLOCKED_RELAYS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_BOOKMARKS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_COMMUNITIES: u32
+pub const radroots_event::envelope::kind::KIND_LIST_DM_RELAYS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_EMOJIS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_GOOD_WIKI_AUTHORS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_GOOD_WIKI_RELAYS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_INTERESTS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_MEDIA_FOLLOWS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_MUTE: u32
+pub const radroots_event::envelope::kind::KIND_LIST_PINNED_NOTES: u32
+pub const radroots_event::envelope::kind::KIND_LIST_PUBLIC_CHATS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_READ_WRITE_RELAYS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_RELAY_FEEDS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SEARCH_RELAYS: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_APP_CURATION: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_BOOKMARK: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_CALENDAR: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_CURATION: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_EMOJI: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_FOLLOW: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_GENERIC: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_INTEREST: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_KIND_MUTE: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_MEDIA_STARTER_PACK: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_PICTURE: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_RELAY: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_RELEASE_ARTIFACT: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_STARTER_PACK: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SET_VIDEO: u32
+pub const radroots_event::envelope::kind::KIND_LIST_SIMPLE_GROUPS: u32
+pub const radroots_event::envelope::kind::KIND_MESSAGE: u32
+pub const radroots_event::envelope::kind::KIND_MESSAGE_FILE: u32
+pub const radroots_event::envelope::kind::KIND_ORDER_CANCELLATION: u32
+pub const radroots_event::envelope::kind::KIND_ORDER_DECISION: u32
+pub const radroots_event::envelope::kind::KIND_ORDER_REQUEST: u32
+pub const radroots_event::envelope::kind::KIND_PLOT: u32
+pub const radroots_event::envelope::kind::KIND_POST: u32
+pub const radroots_event::envelope::kind::KIND_PROFILE: u32
+pub const radroots_event::envelope::kind::KIND_PUBLIC_FILE_METADATA: u32
+pub const radroots_event::envelope::kind::KIND_REACTION: u32
+pub const radroots_event::envelope::kind::KIND_RELAY_AUTH: u32
+pub const radroots_event::envelope::kind::KIND_REPORT: u32
+pub const radroots_event::envelope::kind::KIND_REPOST: u32
+pub const radroots_event::envelope::kind::KIND_RESOURCE_AREA: u32
+pub const radroots_event::envelope::kind::KIND_RESOURCE_HARVEST_CAP: u32
+pub const radroots_event::envelope::kind::KIND_SEAL: u32
+pub const radroots_event::envelope::kind::KIND_TRADE_CANCELLATION: u32
+pub const radroots_event::envelope::kind::KIND_TRADE_DECISION: u32
+pub const radroots_event::envelope::kind::KIND_TRADE_FORBIDDEN_3431: u32
+pub const radroots_event::envelope::kind::KIND_TRADE_PROPOSAL: u32
+pub const radroots_event::envelope::kind::KIND_TRADE_REVISION_DECISION: u32
+pub const radroots_event::envelope::kind::KIND_TRADE_REVISION_PROPOSAL: u32
+pub const radroots_event::envelope::kind::KIND_TRADE_SELLER_RESERVATION_ASSERTION: u32
+pub const radroots_event::envelope::kind::KIND_TRADE_VALIDATION_RECEIPT: u32
+pub const radroots_event::envelope::kind::KIND_VALIDATOR_SET: u32
+pub const radroots_event::envelope::kind::KIND_WIKI_ARTICLE: u32
+pub const radroots_event::envelope::kind::KIND_WIKI_MERGE_REQUEST: u32
+pub const radroots_event::envelope::kind::KIND_WIKI_REDIRECT: u32
+pub const radroots_event::envelope::kind::KNOWLEDGE_ADDRESSABLE_EVENT_KINDS: [u32; 4]
+pub const radroots_event::envelope::kind::KNOWLEDGE_BETA_EVENT_KINDS: [u32; 3]
+pub const radroots_event::envelope::kind::KNOWLEDGE_EVENT_KINDS: [u32; 11]
+pub const radroots_event::envelope::kind::KNOWLEDGE_MVP_EVENT_KINDS: [u32; 8]
+pub const radroots_event::envelope::kind::KNOWLEDGE_REGULAR_EVENT_KINDS: [u32; 7]
+pub const radroots_event::envelope::kind::MAP_CANDIDATE_KINDS: [u32; 7]
+pub const radroots_event::envelope::kind::MARKET_CANDIDATE_KINDS: [u32; 3]
+pub const radroots_event::envelope::kind::MODERATION_ADMIN_CANDIDATE_KINDS: [u32; 1]
+pub const radroots_event::envelope::kind::MVP_SOCIAL_KINDS: [u32; 7]
+pub const radroots_event::envelope::kind::NIP29_GROUP_KINDS: [u32; 13]
+pub const radroots_event::envelope::kind::ORDER_EVENT_KINDS: [u32; 3]
+pub const radroots_event::envelope::kind::PRIVATE_FARM_OPS_KINDS: [u32; 16]
+pub const radroots_event::envelope::kind::PRODUCTION_SOCIAL_KINDS: [u32; 4]
+pub const radroots_event::envelope::kind::PROFILE_PUBLIC_CONTENT_KINDS: [u32; 8]
+pub const radroots_event::envelope::kind::PUBLIC_SOCIAL_KINDS: [u32; 12]
+pub const radroots_event::envelope::kind::TRADE_MUTATION_EVENT_KINDS: [u32; 5]
+pub const radroots_event::envelope::kind::TRADE_VALIDATION_EVENT_KINDS: [u32; 1]
+pub const radroots_event::envelope::kind::UNAMBIGUOUS_PUBLIC_SOCIAL_KINDS: [u32; 11]
+pub const radroots_event::envelope::kind::WIKI_EVENT_KINDS: [u32; 3]
+pub const fn radroots_event::envelope::kind::is_ambiguous_public_social_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_classified_listing_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_commercial_event_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_events_candidate_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_home_feed_candidate_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_knowledge_addressable_event_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_knowledge_beta_event_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_knowledge_event_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_knowledge_mvp_event_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_knowledge_regular_event_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_map_candidate_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_market_candidate_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_moderation_admin_candidate_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_mvp_social_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_nip29_group_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_nip51_list_set_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_nip51_standard_list_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_order_event_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_private_farm_ops_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_production_social_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_profile_public_content_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_public_file_metadata_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_public_social_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_request_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_result_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_trade_mutation_event_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_trade_validation_event_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_trade_validation_receipt_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_trade_validation_service_event_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_trade_validation_service_request_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_trade_validation_service_result_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_unambiguous_public_social_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::is_wiki_event_kind(u32) -> bool
+pub const fn radroots_event::envelope::kind::request_kind_for_result_kind(u32) -> core::option::Option<u32>
+pub const fn radroots_event::envelope::kind::result_kind_for_request_kind(u32) -> core::option::Option<u32>
+pub const fn radroots_event::envelope::kind::trade_validation_service_request_kind_for_result(u32) -> core::option::Option<u32>
+pub const fn radroots_event::envelope::kind::trade_validation_service_result_kind_for_request(u32) -> core::option::Option<u32>
+pub enum radroots_event::envelope::EventEnvelopeError
+pub radroots_event::envelope::EventEnvelopeError::ContentTooLarge
+pub radroots_event::envelope::EventEnvelopeError::ContentTooLarge::actual: usize
+pub radroots_event::envelope::EventEnvelopeError::ContentTooLarge::max: usize
+pub radroots_event::envelope::EventEnvelopeError::ControlCharacterTagKey
+pub radroots_event::envelope::EventEnvelopeError::ControlCharacterTagKey::index: usize
+pub radroots_event::envelope::EventEnvelopeError::EmptyTag
+pub radroots_event::envelope::EventEnvelopeError::EmptyTag::index: usize
+pub radroots_event::envelope::EventEnvelopeError::EmptyTagKey
+pub radroots_event::envelope::EventEnvelopeError::EmptyTagKey::index: usize
+pub radroots_event::envelope::EventEnvelopeError::InvalidAuthor(radroots_event::id::ParseError)
+pub radroots_event::envelope::EventEnvelopeError::InvalidId(radroots_event::id::ParseError)
+pub radroots_event::envelope::EventEnvelopeError::InvalidSignature(radroots_event::id::ParseError)
+pub radroots_event::envelope::EventEnvelopeError::NonCanonicalAuthor
+pub radroots_event::envelope::EventEnvelopeError::NonCanonicalId
+pub radroots_event::envelope::EventEnvelopeError::NonCanonicalSignature
+pub radroots_event::envelope::EventEnvelopeError::TagElementTooLarge
+pub radroots_event::envelope::EventEnvelopeError::TagElementTooLarge::actual: usize
+pub radroots_event::envelope::EventEnvelopeError::TagElementTooLarge::element_index: usize
+pub radroots_event::envelope::EventEnvelopeError::TagElementTooLarge::max: usize
+pub radroots_event::envelope::EventEnvelopeError::TagElementTooLarge::tag_index: usize
+pub radroots_event::envelope::EventEnvelopeError::TagsTooLarge
+pub radroots_event::envelope::EventEnvelopeError::TagsTooLarge::actual: usize
+pub radroots_event::envelope::EventEnvelopeError::TagsTooLarge::max: usize
+pub radroots_event::envelope::EventEnvelopeError::TooManyTagElements
+pub radroots_event::envelope::EventEnvelopeError::TooManyTagElements::actual: usize
+pub radroots_event::envelope::EventEnvelopeError::TooManyTagElements::max: usize
+pub radroots_event::envelope::EventEnvelopeError::TooManyTags
+pub radroots_event::envelope::EventEnvelopeError::TooManyTags::actual: usize
+pub radroots_event::envelope::EventEnvelopeError::TooManyTags::max: usize
+impl core::convert::From<radroots_event::envelope::EventEnvelopeError> for radroots_event::draft::DraftError
+pub fn radroots_event::draft::DraftError::from(radroots_event::envelope::EventEnvelopeError) -> Self
+impl core::convert::From<radroots_event::envelope::EventEnvelopeError> for radroots_event::draft::SignedEventError
+pub fn radroots_event::draft::SignedEventError::from(radroots_event::envelope::EventEnvelopeError) -> Self
+impl core::error::Error for radroots_event::envelope::EventEnvelopeError
+impl core::fmt::Display for radroots_event::envelope::EventEnvelopeError
+pub fn radroots_event::envelope::EventEnvelopeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::envelope::EventKindClass
+pub radroots_event::envelope::EventKindClass::Addressable
+pub radroots_event::envelope::EventKindClass::Ephemeral
+pub radroots_event::envelope::EventKindClass::Regular
+pub radroots_event::envelope::EventKindClass::Replaceable
+pub struct radroots_event::envelope::EventEnvelope
+impl radroots_event::envelope::EventEnvelope
+pub fn radroots_event::envelope::EventEnvelope::author(&self) -> &radroots_identity::key::PublicKey
+pub fn radroots_event::envelope::EventEnvelope::content(&self) -> &str
+pub fn radroots_event::envelope::EventEnvelope::created_at(&self) -> radroots_event::envelope::EventTimestamp
+pub fn radroots_event::envelope::EventEnvelope::created_at_u64(&self) -> u64
+pub fn radroots_event::envelope::EventEnvelope::id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event::envelope::EventEnvelope::id_hex(&self) -> alloc::string::String
+pub fn radroots_event::envelope::EventEnvelope::kind(&self) -> radroots_event::envelope::EventKind
+pub fn radroots_event::envelope::EventEnvelope::kind_class(&self) -> radroots_event::envelope::EventKindClass
+pub fn radroots_event::envelope::EventEnvelope::kind_u32(&self) -> u32
+pub fn radroots_event::envelope::EventEnvelope::new(radroots_event::envelope::EventEnvelopeParts) -> core::result::Result<Self, radroots_event::envelope::EventEnvelopeError>
+pub fn radroots_event::envelope::EventEnvelope::new_with_limits(radroots_event::envelope::EventEnvelopeParts, radroots_event::envelope::EventEnvelopeLimits) -> core::result::Result<Self, radroots_event::envelope::EventEnvelopeError>
+pub fn radroots_event::envelope::EventEnvelope::sig(&self) -> &radroots_event::id::EventSignature
+pub fn radroots_event::envelope::EventEnvelope::signature_hex(&self) -> alloc::string::String
+pub fn radroots_event::envelope::EventEnvelope::tag_slices(&self) -> &[radroots_event::envelope::EventTag]
+pub fn radroots_event::envelope::EventEnvelope::tags(&self) -> &radroots_event::envelope::EventTags
+pub fn radroots_event::envelope::EventEnvelope::tags_as_vec(&self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event::envelope::EventEnvelope::to_nip01_wire(&self) -> Nip01EventWire
+pub struct radroots_event::envelope::EventEnvelopeLimits
+pub radroots_event::envelope::EventEnvelopeLimits::max_content_bytes: usize
+pub radroots_event::envelope::EventEnvelopeLimits::max_tag_count: usize
+pub radroots_event::envelope::EventEnvelopeLimits::max_tag_element_bytes: usize
+pub radroots_event::envelope::EventEnvelopeLimits::max_total_tag_bytes: usize
+pub radroots_event::envelope::EventEnvelopeLimits::max_total_tag_elements: usize
+impl core::default::Default for radroots_event::envelope::EventEnvelopeLimits
+pub fn radroots_event::envelope::EventEnvelopeLimits::default() -> Self
+pub struct radroots_event::envelope::EventEnvelopeParts
+pub radroots_event::envelope::EventEnvelopeParts::author: alloc::string::String
+pub radroots_event::envelope::EventEnvelopeParts::content: alloc::string::String
+pub radroots_event::envelope::EventEnvelopeParts::created_at: u64
+pub radroots_event::envelope::EventEnvelopeParts::id: alloc::string::String
+pub radroots_event::envelope::EventEnvelopeParts::kind: u32
+pub radroots_event::envelope::EventEnvelopeParts::sig: alloc::string::String
+pub radroots_event::envelope::EventEnvelopeParts::tags: alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub struct radroots_event::envelope::EventKind(_)
+impl radroots_event::envelope::EventKind
+pub const fn radroots_event::envelope::EventKind::as_u32(self) -> u32
+pub const fn radroots_event::envelope::EventKind::class(self) -> radroots_event::envelope::EventKindClass
+pub const fn radroots_event::envelope::EventKind::new(u32) -> Self
+impl core::convert::From<u32> for radroots_event::envelope::EventKind
+pub fn radroots_event::envelope::EventKind::from(u32) -> Self
+impl serde_core::ser::Serialize for radroots_event::envelope::EventKind
+pub fn radroots_event::envelope::EventKind::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_event::envelope::EventKind
+pub fn radroots_event::envelope::EventKind::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::envelope::EventTag(_)
+impl radroots_event::envelope::EventTag
+pub fn radroots_event::envelope::EventTag::as_slice(&self) -> &[alloc::string::String]
+pub fn radroots_event::envelope::EventTag::into_vec(self) -> alloc::vec::Vec<alloc::string::String>
+pub fn radroots_event::envelope::EventTag::new(usize, alloc::vec::Vec<alloc::string::String>) -> core::result::Result<Self, radroots_event::envelope::EventEnvelopeError>
+pub fn radroots_event::envelope::EventTag::new_with_limits(usize, alloc::vec::Vec<alloc::string::String>, radroots_event::envelope::EventEnvelopeLimits) -> core::result::Result<Self, radroots_event::envelope::EventEnvelopeError>
+impl serde_core::ser::Serialize for radroots_event::envelope::EventTag
+pub fn radroots_event::envelope::EventTag::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_event::envelope::EventTag
+pub fn radroots_event::envelope::EventTag::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::envelope::EventTags(_)
+impl radroots_event::envelope::EventTags
+pub fn radroots_event::envelope::EventTags::as_slice(&self) -> &[radroots_event::envelope::EventTag]
+pub fn radroots_event::envelope::EventTags::into_vec(self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event::envelope::EventTags::is_empty(&self) -> bool
+pub fn radroots_event::envelope::EventTags::len(&self) -> usize
+pub fn radroots_event::envelope::EventTags::new(alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<Self, radroots_event::envelope::EventEnvelopeError>
+pub fn radroots_event::envelope::EventTags::new_with_limits(alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event::envelope::EventEnvelopeLimits) -> core::result::Result<Self, radroots_event::envelope::EventEnvelopeError>
+pub fn radroots_event::envelope::EventTags::to_vec(&self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+impl serde_core::ser::Serialize for radroots_event::envelope::EventTags
+pub fn radroots_event::envelope::EventTags::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_event::envelope::EventTags
+pub fn radroots_event::envelope::EventTags::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::envelope::EventTimestamp(_)
+impl radroots_event::envelope::EventTimestamp
+pub const fn radroots_event::envelope::EventTimestamp::as_u64(self) -> u64
+pub const fn radroots_event::envelope::EventTimestamp::new(u64) -> Self
+impl core::convert::From<u64> for radroots_event::envelope::EventTimestamp
+pub fn radroots_event::envelope::EventTimestamp::from(u64) -> Self
+impl serde_core::ser::Serialize for radroots_event::envelope::EventTimestamp
+pub fn radroots_event::envelope::EventTimestamp::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_event::envelope::EventTimestamp
+pub fn radroots_event::envelope::EventTimestamp::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub mod radroots_event::farm
+pub mod radroots_event::farm::change_set
+pub struct radroots_event::farm::change_set::GcsLocation
+pub radroots_event::farm::change_set::GcsLocation::accuracy: core::option::Option<f64>
+pub radroots_event::farm::change_set::GcsLocation::altitude: core::option::Option<f64>
+pub radroots_event::farm::change_set::GcsLocation::area: core::option::Option<f64>
+pub radroots_event::farm::change_set::GcsLocation::climate: core::option::Option<alloc::string::String>
+pub radroots_event::farm::change_set::GcsLocation::elevation: core::option::Option<u32>
+pub radroots_event::farm::change_set::GcsLocation::gc_admin1_id: core::option::Option<alloc::string::String>
+pub radroots_event::farm::change_set::GcsLocation::gc_admin1_name: core::option::Option<alloc::string::String>
+pub radroots_event::farm::change_set::GcsLocation::gc_country_id: core::option::Option<alloc::string::String>
+pub radroots_event::farm::change_set::GcsLocation::gc_country_name: core::option::Option<alloc::string::String>
+pub radroots_event::farm::change_set::GcsLocation::gc_id: core::option::Option<alloc::string::String>
+pub radroots_event::farm::change_set::GcsLocation::gc_name: core::option::Option<alloc::string::String>
+pub radroots_event::farm::change_set::GcsLocation::geohash: alloc::string::String
+pub radroots_event::farm::change_set::GcsLocation::label: core::option::Option<alloc::string::String>
+pub radroots_event::farm::change_set::GcsLocation::lat: f64
+pub radroots_event::farm::change_set::GcsLocation::lng: f64
+pub radroots_event::farm::change_set::GcsLocation::point: radroots_event::farm::change_set::GeoJsonPoint
+pub radroots_event::farm::change_set::GcsLocation::polygon: radroots_event::farm::change_set::GeoJsonPolygon
+pub radroots_event::farm::change_set::GcsLocation::soil: core::option::Option<alloc::string::String>
+pub radroots_event::farm::change_set::GcsLocation::tag_0: core::option::Option<alloc::string::String>
+pub struct radroots_event::farm::change_set::GeoJsonPoint
+pub radroots_event::farm::change_set::GeoJsonPoint::coordinates: [f64; 2]
+pub radroots_event::farm::change_set::GeoJsonPoint::type: alloc::string::String
+pub struct radroots_event::farm::change_set::GeoJsonPolygon
+pub radroots_event::farm::change_set::GeoJsonPolygon::coordinates: alloc::vec::Vec<alloc::vec::Vec<[f64; 2]>>
+pub radroots_event::farm::change_set::GeoJsonPolygon::type: alloc::string::String
+pub mod radroots_event::farm::coop
+pub struct radroots_event::farm::coop::Coop
+pub radroots_event::farm::coop::Coop::about: core::option::Option<alloc::string::String>
+pub radroots_event::farm::coop::Coop::banner: core::option::Option<alloc::string::String>
+pub radroots_event::farm::coop::Coop::d_tag: alloc::string::String
+pub radroots_event::farm::coop::Coop::location: core::option::Option<radroots_event::farm::coop::CoopLocation>
+pub radroots_event::farm::coop::Coop::name: alloc::string::String
+pub radroots_event::farm::coop::Coop::picture: core::option::Option<alloc::string::String>
+pub radroots_event::farm::coop::Coop::tags: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub radroots_event::farm::coop::Coop::website: core::option::Option<alloc::string::String>
+pub struct radroots_event::farm::coop::CoopLocation
+pub radroots_event::farm::coop::CoopLocation::city: core::option::Option<alloc::string::String>
+pub radroots_event::farm::coop::CoopLocation::country: core::option::Option<alloc::string::String>
+pub radroots_event::farm::coop::CoopLocation::gcs: radroots_event::farm::change_set::GcsLocation
+pub radroots_event::farm::coop::CoopLocation::primary: core::option::Option<alloc::string::String>
+pub radroots_event::farm::coop::CoopLocation::region: core::option::Option<alloc::string::String>
+pub struct radroots_event::farm::coop::CoopRef
+pub radroots_event::farm::coop::CoopRef::d_tag: alloc::string::String
+pub radroots_event::farm::coop::CoopRef::pubkey: alloc::string::String
+pub mod radroots_event::farm::crdt
+pub enum radroots_event::farm::crdt::CrdtBackend
+pub radroots_event::farm::crdt::CrdtBackend::Automerge
+pub radroots_event::farm::crdt::CrdtBackend::Loro
+pub radroots_event::farm::crdt::CrdtBackend::Yjs
+pub enum radroots_event::farm::crdt::FarmCrdtDocumentKind
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmActivity
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmAttachment
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmCrop
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmCropCycle
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmCropVariety
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmHarvestRecord
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmInventoryItem
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmLocation
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmMediaAsset
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmMembership
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmObservation
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmPayPeriod
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmRolePolicy
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmTask
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::FarmWorkSession
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::Other
+pub radroots_event::farm::crdt::FarmCrdtDocumentKind::Other::value: alloc::string::String
+impl radroots_event::farm::crdt::FarmCrdtDocumentKind
+pub fn radroots_event::farm::crdt::FarmCrdtDocumentKind::as_str(&self) -> &str
+impl core::convert::From<alloc::string::String> for radroots_event::farm::crdt::FarmCrdtDocumentKind
+pub fn radroots_event::farm::crdt::FarmCrdtDocumentKind::from(alloc::string::String) -> Self
+impl core::convert::From<radroots_event::farm::crdt::FarmCrdtDocumentKind> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::farm::crdt::FarmCrdtDocumentKind) -> Self
+pub enum radroots_event::farm::crdt::FarmSemanticKind
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmActivityCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmCropCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmCropCycleCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmCropVarietyCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmHarvestAttachmentAttach
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmHarvestLineAdd
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmHarvestLineCorrect
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmHarvestLineVoid
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmHarvestRecordCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmHarvestRecordUpdate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmInventoryItemUpdate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmLocationCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmMediaAssetAttach
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmMemberApprove
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmMemberDeactivate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmMemberInviteCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmMemberRoleSet
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmNoteCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmObservationCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmPayPeriodClose
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmPayPeriodOpen
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmReportExportMark
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmTaskAssign
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmTaskAttachmentAttach
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmTaskChecklistItemAdd
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmTaskCommentAdd
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmTaskComplete
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmTaskCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmTaskFollowUpCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmTaskJoin
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmTaskStatusSet
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmTaskUpdate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmWorkSessionApprove
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmWorkSessionCorrect
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmWorkSessionEnd
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmWorkSessionManualEntryCreate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmWorkSessionReject
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmWorkSessionStart
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmWorkSessionStop
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmWorkSessionSubmit
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmWorkSessionUpdate
+pub radroots_event::farm::crdt::FarmSemanticKind::FarmWorkspaceUpdate
+pub radroots_event::farm::crdt::FarmSemanticKind::Other
+pub radroots_event::farm::crdt::FarmSemanticKind::Other::value: alloc::string::String
+impl radroots_event::farm::crdt::FarmSemanticKind
+pub fn radroots_event::farm::crdt::FarmSemanticKind::as_str(&self) -> &str
+impl core::convert::From<alloc::string::String> for radroots_event::farm::crdt::FarmSemanticKind
+pub fn radroots_event::farm::crdt::FarmSemanticKind::from(alloc::string::String) -> Self
+impl core::convert::From<radroots_event::farm::crdt::FarmSemanticKind> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::farm::crdt::FarmSemanticKind) -> Self
+pub struct radroots_event::farm::crdt::FarmCrdtChange
+pub radroots_event::farm::crdt::FarmCrdtChange::actor_id: alloc::string::String
+pub radroots_event::farm::crdt::FarmCrdtChange::app_version: core::option::Option<alloc::string::String>
+pub radroots_event::farm::crdt::FarmCrdtChange::author_member_id: core::option::Option<alloc::string::String>
+pub radroots_event::farm::crdt::FarmCrdtChange::business_time_ms: u64
+pub radroots_event::farm::crdt::FarmCrdtChange::change_hash: alloc::string::String
+pub radroots_event::farm::crdt::FarmCrdtChange::crdt_backend: radroots_event::farm::crdt::CrdtBackend
+pub radroots_event::farm::crdt::FarmCrdtChange::crdt_backend_version: core::option::Option<alloc::string::String>
+pub radroots_event::farm::crdt::FarmCrdtChange::dependencies: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::farm::crdt::FarmCrdtChange::document_id: alloc::string::String
+pub radroots_event::farm::crdt::FarmCrdtChange::document_kind: radroots_event::farm::crdt::FarmCrdtDocumentKind
+pub radroots_event::farm::crdt::FarmCrdtChange::encoded_change: alloc::string::String
+pub radroots_event::farm::crdt::FarmCrdtChange::farm_group_id: alloc::string::String
+pub radroots_event::farm::crdt::FarmCrdtChange::schema: alloc::string::String
+pub radroots_event::farm::crdt::FarmCrdtChange::semantic_kind: radroots_event::farm::crdt::FarmSemanticKind
+pub radroots_event::farm::crdt::FarmCrdtChange::workspace: radroots_event::farm::workspace::FarmWorkspaceRef
+pub const radroots_event::farm::crdt::KIND_FARM_CRDT_CHANGE: u32
+pub const radroots_event::farm::crdt::RADROOTS_FARM_CRDT_CHANGE_SCHEMA: &str
+pub const radroots_event::farm::crdt::RADROOTS_FARM_CRDT_TAG: &str
+pub mod radroots_event::farm::file
+pub struct radroots_event::farm::file::FarmFileDimensions
+pub radroots_event::farm::file::FarmFileDimensions::h: u32
+pub radroots_event::farm::file::FarmFileDimensions::w: u32
+pub struct radroots_event::farm::file::FarmFileMetadata
+pub radroots_event::farm::file::FarmFileMetadata::alt: core::option::Option<alloc::string::String>
+pub radroots_event::farm::file::FarmFileMetadata::blurhash: core::option::Option<alloc::string::String>
+pub radroots_event::farm::file::FarmFileMetadata::caption: core::option::Option<alloc::string::String>
+pub radroots_event::farm::file::FarmFileMetadata::d_tag: alloc::string::String
+pub radroots_event::farm::file::FarmFileMetadata::dimensions: core::option::Option<radroots_event::farm::file::FarmFileDimensions>
+pub radroots_event::farm::file::FarmFileMetadata::fallbacks: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::farm::file::FarmFileMetadata::farm_group_id: alloc::string::String
+pub radroots_event::farm::file::FarmFileMetadata::image: core::option::Option<radroots_event::farm::file::FarmFileSource>
+pub radroots_event::farm::file::FarmFileMetadata::mime_type: alloc::string::String
+pub radroots_event::farm::file::FarmFileMetadata::original_sha256: core::option::Option<alloc::string::String>
+pub radroots_event::farm::file::FarmFileMetadata::owner_document_id: alloc::string::String
+pub radroots_event::farm::file::FarmFileMetadata::owner_document_kind: radroots_event::farm::crdt::FarmCrdtDocumentKind
+pub radroots_event::farm::file::FarmFileMetadata::sha256: alloc::string::String
+pub radroots_event::farm::file::FarmFileMetadata::size_bytes: core::option::Option<u64>
+pub radroots_event::farm::file::FarmFileMetadata::thumb: core::option::Option<radroots_event::farm::file::FarmFileSource>
+pub radroots_event::farm::file::FarmFileMetadata::url: alloc::string::String
+pub radroots_event::farm::file::FarmFileMetadata::workspace: radroots_event::farm::workspace::FarmWorkspaceRef
+pub struct radroots_event::farm::file::FarmFileSource
+pub radroots_event::farm::file::FarmFileSource::dimensions: core::option::Option<radroots_event::farm::file::FarmFileDimensions>
+pub radroots_event::farm::file::FarmFileSource::mime_type: core::option::Option<alloc::string::String>
+pub radroots_event::farm::file::FarmFileSource::url: alloc::string::String
+pub const radroots_event::farm::file::KIND_FARM_FILE_METADATA: u32
+pub mod radroots_event::farm::location
+pub const radroots_event::farm::location::RADROOTS_PUBLIC_GEOHASH_BASE32: &str
+pub const radroots_event::farm::location::RADROOTS_PUBLIC_GEOHASH_PRECISION: usize
+pub fn radroots_event::farm::location::has_textual_locality(&str, core::option::Option<&str>, core::option::Option<&str>, core::option::Option<&str>) -> bool
+pub fn radroots_event::farm::location::is_public_geohash5(&str) -> bool
+pub mod radroots_event::farm::plot
+pub struct radroots_event::farm::plot::Plot
+pub radroots_event::farm::plot::Plot::about: core::option::Option<alloc::string::String>
+pub radroots_event::farm::plot::Plot::d_tag: alloc::string::String
+pub radroots_event::farm::plot::Plot::farm: radroots_event::farm::FarmRef
+pub radroots_event::farm::plot::Plot::location: core::option::Option<radroots_event::farm::plot::PlotLocation>
+pub radroots_event::farm::plot::Plot::name: alloc::string::String
+pub radroots_event::farm::plot::Plot::tags: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub struct radroots_event::farm::plot::PlotLocation
+pub radroots_event::farm::plot::PlotLocation::city: core::option::Option<alloc::string::String>
+pub radroots_event::farm::plot::PlotLocation::country: core::option::Option<alloc::string::String>
+pub radroots_event::farm::plot::PlotLocation::gcs: radroots_event::farm::change_set::GcsLocation
+pub radroots_event::farm::plot::PlotLocation::primary: core::option::Option<alloc::string::String>
+pub radroots_event::farm::plot::PlotLocation::region: core::option::Option<alloc::string::String>
+pub struct radroots_event::farm::plot::PlotRef
+pub radroots_event::farm::plot::PlotRef::d_tag: alloc::string::String
+pub radroots_event::farm::plot::PlotRef::pubkey: alloc::string::String
+pub mod radroots_event::farm::resource_area
+pub struct radroots_event::farm::resource_area::ResourceArea
+pub radroots_event::farm::resource_area::ResourceArea::about: core::option::Option<alloc::string::String>
+pub radroots_event::farm::resource_area::ResourceArea::d_tag: alloc::string::String
+pub radroots_event::farm::resource_area::ResourceArea::location: radroots_event::farm::resource_area::ResourceAreaLocation
+pub radroots_event::farm::resource_area::ResourceArea::name: alloc::string::String
+pub radroots_event::farm::resource_area::ResourceArea::tags: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub struct radroots_event::farm::resource_area::ResourceAreaLocation
+pub radroots_event::farm::resource_area::ResourceAreaLocation::city: core::option::Option<alloc::string::String>
+pub radroots_event::farm::resource_area::ResourceAreaLocation::country: core::option::Option<alloc::string::String>
+pub radroots_event::farm::resource_area::ResourceAreaLocation::gcs: radroots_event::farm::change_set::GcsLocation
+pub radroots_event::farm::resource_area::ResourceAreaLocation::primary: core::option::Option<alloc::string::String>
+pub radroots_event::farm::resource_area::ResourceAreaLocation::region: core::option::Option<alloc::string::String>
+pub struct radroots_event::farm::resource_area::ResourceAreaRef
+pub radroots_event::farm::resource_area::ResourceAreaRef::d_tag: alloc::string::String
+pub radroots_event::farm::resource_area::ResourceAreaRef::pubkey: alloc::string::String
+pub mod radroots_event::farm::resource_cap
+pub struct radroots_event::farm::resource_cap::ResourceHarvestCap
+pub radroots_event::farm::resource_cap::ResourceHarvestCap::cap_quantity: radroots_core::quantity::Quantity
+pub radroots_event::farm::resource_cap::ResourceHarvestCap::d_tag: alloc::string::String
+pub radroots_event::farm::resource_cap::ResourceHarvestCap::display_amount: core::option::Option<radroots_core::decimal::Decimal>
+pub radroots_event::farm::resource_cap::ResourceHarvestCap::display_label: core::option::Option<alloc::string::String>
+pub radroots_event::farm::resource_cap::ResourceHarvestCap::display_unit: core::option::Option<radroots_core::unit::Unit>
+pub radroots_event::farm::resource_cap::ResourceHarvestCap::end: u64
+pub radroots_event::farm::resource_cap::ResourceHarvestCap::product: radroots_event::farm::resource_cap::ResourceHarvestProduct
+pub radroots_event::farm::resource_cap::ResourceHarvestCap::resource_area: radroots_event::farm::resource_area::ResourceAreaRef
+pub radroots_event::farm::resource_cap::ResourceHarvestCap::start: u64
+pub radroots_event::farm::resource_cap::ResourceHarvestCap::tags: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub struct radroots_event::farm::resource_cap::ResourceHarvestProduct
+pub radroots_event::farm::resource_cap::ResourceHarvestProduct::category: core::option::Option<alloc::string::String>
+pub radroots_event::farm::resource_cap::ResourceHarvestProduct::key: alloc::string::String
+pub mod radroots_event::farm::workspace
+pub enum radroots_event::farm::workspace::FarmWorkspaceRelayMode
+pub radroots_event::farm::workspace::FarmWorkspaceRelayMode::Read
+pub radroots_event::farm::workspace::FarmWorkspaceRelayMode::ReadWrite
+pub radroots_event::farm::workspace::FarmWorkspaceRelayMode::Write
+pub struct radroots_event::farm::workspace::FarmWorkspaceManifest
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::created_at_ms: u64
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::d_tag: alloc::string::String
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::farm: core::option::Option<radroots_event::farm::FarmRef>
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::farm_group_id: alloc::string::String
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::media_servers: alloc::vec::Vec<radroots_event::farm::workspace::FarmWorkspaceMediaServer>
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::name: alloc::string::String
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::owner_pubkey: alloc::string::String
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::protocol_version: alloc::string::String
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::relays: alloc::vec::Vec<radroots_event::farm::workspace::FarmWorkspaceRelay>
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::schema: alloc::string::String
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::supported_kinds: alloc::vec::Vec<u32>
+pub radroots_event::farm::workspace::FarmWorkspaceManifest::updated_at_ms: core::option::Option<u64>
+pub struct radroots_event::farm::workspace::FarmWorkspaceMediaServer
+pub radroots_event::farm::workspace::FarmWorkspaceMediaServer::service: alloc::string::String
+pub radroots_event::farm::workspace::FarmWorkspaceMediaServer::url: alloc::string::String
+pub struct radroots_event::farm::workspace::FarmWorkspaceRef
+pub radroots_event::farm::workspace::FarmWorkspaceRef::d_tag: alloc::string::String
+pub radroots_event::farm::workspace::FarmWorkspaceRef::pubkey: alloc::string::String
+pub struct radroots_event::farm::workspace::FarmWorkspaceRelay
+pub radroots_event::farm::workspace::FarmWorkspaceRelay::mode: radroots_event::farm::workspace::FarmWorkspaceRelayMode
+pub radroots_event::farm::workspace::FarmWorkspaceRelay::url: alloc::string::String
+pub const radroots_event::farm::workspace::KIND_FARM_WORKSPACE_MANIFEST: u32
+pub const radroots_event::farm::workspace::RADROOTS_FARM_WORKSPACE_PROTOCOL_VERSION: &str
+pub const radroots_event::farm::workspace::RADROOTS_FARM_WORKSPACE_SCHEMA: &str
+pub const radroots_event::farm::workspace::RADROOTS_FARM_WORKSPACE_TAG: &str
+pub struct radroots_event::farm::Farm
+pub radroots_event::farm::Farm::about: core::option::Option<alloc::string::String>
+pub radroots_event::farm::Farm::banner: core::option::Option<alloc::string::String>
+pub radroots_event::farm::Farm::d_tag: alloc::string::String
+pub radroots_event::farm::Farm::location: core::option::Option<radroots_event::farm::FarmPublicLocation>
+pub radroots_event::farm::Farm::name: alloc::string::String
+pub radroots_event::farm::Farm::picture: core::option::Option<alloc::string::String>
+pub radroots_event::farm::Farm::tags: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub radroots_event::farm::Farm::website: core::option::Option<alloc::string::String>
+pub struct radroots_event::farm::FarmPublicLocation
+pub radroots_event::farm::FarmPublicLocation::city: core::option::Option<alloc::string::String>
+pub radroots_event::farm::FarmPublicLocation::country: core::option::Option<alloc::string::String>
+pub radroots_event::farm::FarmPublicLocation::geohash: alloc::string::String
+pub radroots_event::farm::FarmPublicLocation::primary: alloc::string::String
+pub radroots_event::farm::FarmPublicLocation::region: core::option::Option<alloc::string::String>
+pub struct radroots_event::farm::FarmRef
+pub radroots_event::farm::FarmRef::d_tag: alloc::string::String
+pub radroots_event::farm::FarmRef::pubkey: alloc::string::String
+pub mod radroots_event::food
+pub mod radroots_event::food::availability
+#[non_exhaustive] pub enum radroots_event::food::availability::FoodAvailabilityError
+pub radroots_event::food::availability::FoodAvailabilityError::ContentMissing
+pub radroots_event::food::availability::FoodAvailabilityError::ContentTooLarge
+pub radroots_event::food::availability::FoodAvailabilityError::ContentTooLarge::actual: usize
+pub radroots_event::food::availability::FoodAvailabilityError::ContentTooLarge::max: usize
+pub radroots_event::food::availability::FoodAvailabilityError::IdentifierInvalid
+pub radroots_event::food::availability::FoodAvailabilityError::IdentifierTooLarge
+pub radroots_event::food::availability::FoodAvailabilityError::IdentifierTooLarge::actual: usize
+pub radroots_event::food::availability::FoodAvailabilityError::IdentifierTooLarge::max: usize
+pub radroots_event::food::availability::FoodAvailabilityError::ImageCountExceeded
+pub radroots_event::food::availability::FoodAvailabilityError::ImageCountExceeded::actual: usize
+pub radroots_event::food::availability::FoodAvailabilityError::ImageCountExceeded::max: usize
+pub radroots_event::food::availability::FoodAvailabilityError::ImageDimensionsInvalid
+pub radroots_event::food::availability::FoodAvailabilityError::ImageDuplicateDigest
+pub radroots_event::food::availability::FoodAvailabilityError::ImageDuplicateUrl
+pub radroots_event::food::availability::FoodAvailabilityError::PriceCurrencyInvalid
+pub radroots_event::food::availability::FoodAvailabilityError::PriceInvalid
+pub radroots_event::food::availability::FoodAvailabilityError::PriceUnitInvalid
+pub radroots_event::food::availability::FoodAvailabilityError::PublishedAtFuture
+pub radroots_event::food::availability::FoodAvailabilityError::PublishedAtFuture::created_at: u64
+pub radroots_event::food::availability::FoodAvailabilityError::PublishedAtFuture::published_at: u64
+pub radroots_event::food::availability::FoodAvailabilityError::PublishedAtInvalid
+pub radroots_event::food::availability::FoodAvailabilityError::QuantityInvalid
+pub radroots_event::food::availability::FoodAvailabilityError::QuantityZero
+pub radroots_event::food::availability::FoodAvailabilityError::StatusInvalid
+pub radroots_event::food::availability::FoodAvailabilityError::TextInvalid
+pub radroots_event::food::availability::FoodAvailabilityError::TextTooLarge
+pub radroots_event::food::availability::FoodAvailabilityError::TextTooLarge::actual: usize
+pub radroots_event::food::availability::FoodAvailabilityError::TextTooLarge::max: usize
+impl radroots_event::food::availability::FoodAvailabilityError
+pub const fn radroots_event::food::availability::FoodAvailabilityError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::food::availability::FoodAvailabilityError
+impl core::fmt::Display for radroots_event::food::availability::FoodAvailabilityError
+pub fn radroots_event::food::availability::FoodAvailabilityError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::food::availability::FoodAvailabilityStatus
+pub radroots_event::food::availability::FoodAvailabilityStatus::Active
+pub radroots_event::food::availability::FoodAvailabilityStatus::Sold
+impl radroots_event::food::availability::FoodAvailabilityStatus
+pub const fn radroots_event::food::availability::FoodAvailabilityStatus::as_str(self) -> &'static str
+pub fn radroots_event::food::availability::FoodAvailabilityStatus::parse(&str) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+impl core::fmt::Display for radroots_event::food::availability::FoodAvailabilityStatus
+pub fn radroots_event::food::availability::FoodAvailabilityStatus::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::food::availability::FoodAvailabilityStatus
+pub type radroots_event::food::availability::FoodAvailabilityStatus::Err = radroots_event::food::availability::FoodAvailabilityError
+pub fn radroots_event::food::availability::FoodAvailabilityStatus::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub enum radroots_event::food::availability::FoodUnit
+pub radroots_event::food::availability::FoodUnit::Bag
+pub radroots_event::food::availability::FoodUnit::Basket
+pub radroots_event::food::availability::FoodUnit::Bunch
+pub radroots_event::food::availability::FoodUnit::Dozen
+pub radroots_event::food::availability::FoodUnit::Each
+pub radroots_event::food::availability::FoodUnit::Gram
+pub radroots_event::food::availability::FoodUnit::Kilogram
+pub radroots_event::food::availability::FoodUnit::Ounce
+pub radroots_event::food::availability::FoodUnit::Pound
+pub radroots_event::food::availability::FoodUnit::Punnet
+impl radroots_event::food::availability::FoodUnit
+pub const fn radroots_event::food::availability::FoodUnit::as_str(self) -> &'static str
+pub fn radroots_event::food::availability::FoodUnit::parse(&str) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+impl core::fmt::Display for radroots_event::food::availability::FoodUnit
+pub fn radroots_event::food::availability::FoodUnit::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::food::availability::FoodUnit
+pub type radroots_event::food::availability::FoodUnit::Err = radroots_event::food::availability::FoodAvailabilityError
+pub fn radroots_event::food::availability::FoodUnit::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub struct radroots_event::food::availability::FoodAvailabilityDetails
+impl radroots_event::food::availability::FoodAvailabilityDetails
+pub fn radroots_event::food::availability::FoodAvailabilityDetails::content(&self) -> &radroots_event::food::availability::FoodContent
+pub fn radroots_event::food::availability::FoodAvailabilityDetails::identifier(&self) -> &radroots_event::food::availability::FoodIdentifier
+pub fn radroots_event::food::availability::FoodAvailabilityDetails::images(&self) -> &[radroots_event::food::availability::FoodAvailabilityImage]
+pub fn radroots_event::food::availability::FoodAvailabilityDetails::location(&self) -> &radroots_event::food::availability::FoodText
+pub fn radroots_event::food::availability::FoodAvailabilityDetails::new(radroots_event::food::availability::FoodAvailabilityDetailsParts) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+pub fn radroots_event::food::availability::FoodAvailabilityDetails::price(&self) -> &radroots_event::food::availability::FoodPrice
+pub const fn radroots_event::food::availability::FoodAvailabilityDetails::published_at(&self) -> radroots_event::food::availability::FoodPublishedAt
+pub fn radroots_event::food::availability::FoodAvailabilityDetails::quantity(&self) -> core::option::Option<&radroots_event::food::availability::FoodQuantity>
+pub const fn radroots_event::food::availability::FoodAvailabilityDetails::status(&self) -> radroots_event::food::availability::FoodAvailabilityStatus
+pub fn radroots_event::food::availability::FoodAvailabilityDetails::summary(&self) -> &radroots_event::food::availability::FoodText
+pub fn radroots_event::food::availability::FoodAvailabilityDetails::title(&self) -> &radroots_event::food::availability::FoodText
+pub fn radroots_event::food::availability::FoodAvailabilityDetails::validate_created_at(&self, u64) -> core::result::Result<(), radroots_event::food::availability::FoodAvailabilityError>
+pub struct radroots_event::food::availability::FoodAvailabilityDetailsParts
+pub radroots_event::food::availability::FoodAvailabilityDetailsParts::content: radroots_event::food::availability::FoodContent
+pub radroots_event::food::availability::FoodAvailabilityDetailsParts::identifier: radroots_event::food::availability::FoodIdentifier
+pub radroots_event::food::availability::FoodAvailabilityDetailsParts::images: alloc::vec::Vec<radroots_event::food::availability::FoodAvailabilityImage>
+pub radroots_event::food::availability::FoodAvailabilityDetailsParts::location: radroots_event::food::availability::FoodText
+pub radroots_event::food::availability::FoodAvailabilityDetailsParts::price: radroots_event::food::availability::FoodPrice
+pub radroots_event::food::availability::FoodAvailabilityDetailsParts::published_at: radroots_event::food::availability::FoodPublishedAt
+pub radroots_event::food::availability::FoodAvailabilityDetailsParts::quantity: core::option::Option<radroots_event::food::availability::FoodQuantity>
+pub radroots_event::food::availability::FoodAvailabilityDetailsParts::status: radroots_event::food::availability::FoodAvailabilityStatus
+pub radroots_event::food::availability::FoodAvailabilityDetailsParts::summary: radroots_event::food::availability::FoodText
+pub radroots_event::food::availability::FoodAvailabilityDetailsParts::title: radroots_event::food::availability::FoodText
+pub struct radroots_event::food::availability::FoodAvailabilityImage
+impl radroots_event::food::availability::FoodAvailabilityImage
+pub const fn radroots_event::food::availability::FoodAvailabilityImage::dimensions(&self) -> radroots_event::food::availability::FoodImageDimensions
+pub fn radroots_event::food::availability::FoodAvailabilityImage::image(&self) -> &radroots_event::media::AuthoredImage
+pub const fn radroots_event::food::availability::FoodAvailabilityImage::new(radroots_event::media::AuthoredImage, radroots_event::food::availability::FoodImageDimensions) -> Self
+pub fn radroots_event::food::availability::FoodAvailabilityImage::url(&self) -> &str
+pub struct radroots_event::food::availability::FoodContent(_)
+impl radroots_event::food::availability::FoodContent
+pub fn radroots_event::food::availability::FoodContent::as_str(&self) -> &str
+pub fn radroots_event::food::availability::FoodContent::into_string(self) -> alloc::string::String
+pub fn radroots_event::food::availability::FoodContent::new(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+impl core::convert::AsRef<str> for radroots_event::food::availability::FoodContent
+pub fn radroots_event::food::availability::FoodContent::as_ref(&self) -> &str
+impl core::fmt::Display for radroots_event::food::availability::FoodContent
+pub fn radroots_event::food::availability::FoodContent::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::food::availability::FoodCurrency(_)
+impl radroots_event::food::availability::FoodCurrency
+pub fn radroots_event::food::availability::FoodCurrency::as_str(&self) -> &str
+pub fn radroots_event::food::availability::FoodCurrency::into_string(self) -> alloc::string::String
+pub fn radroots_event::food::availability::FoodCurrency::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+impl core::convert::AsRef<str> for radroots_event::food::availability::FoodCurrency
+pub fn radroots_event::food::availability::FoodCurrency::as_ref(&self) -> &str
+impl core::fmt::Display for radroots_event::food::availability::FoodCurrency
+pub fn radroots_event::food::availability::FoodCurrency::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::food::availability::FoodCurrency
+pub type radroots_event::food::availability::FoodCurrency::Err = radroots_event::food::availability::FoodAvailabilityError
+pub fn radroots_event::food::availability::FoodCurrency::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub struct radroots_event::food::availability::FoodIdentifier(_)
+impl radroots_event::food::availability::FoodIdentifier
+pub fn radroots_event::food::availability::FoodIdentifier::as_str(&self) -> &str
+pub fn radroots_event::food::availability::FoodIdentifier::into_string(self) -> alloc::string::String
+pub fn radroots_event::food::availability::FoodIdentifier::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+impl core::convert::AsRef<str> for radroots_event::food::availability::FoodIdentifier
+pub fn radroots_event::food::availability::FoodIdentifier::as_ref(&self) -> &str
+impl core::fmt::Display for radroots_event::food::availability::FoodIdentifier
+pub fn radroots_event::food::availability::FoodIdentifier::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::food::availability::FoodIdentifier
+pub type radroots_event::food::availability::FoodIdentifier::Err = radroots_event::food::availability::FoodAvailabilityError
+pub fn radroots_event::food::availability::FoodIdentifier::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub struct radroots_event::food::availability::FoodImageDimensions
+impl radroots_event::food::availability::FoodImageDimensions
+pub const fn radroots_event::food::availability::FoodImageDimensions::height(self) -> u32
+pub const fn radroots_event::food::availability::FoodImageDimensions::new(u32, u32) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+pub fn radroots_event::food::availability::FoodImageDimensions::parse(&str) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+pub const fn radroots_event::food::availability::FoodImageDimensions::width(self) -> u32
+impl core::fmt::Display for radroots_event::food::availability::FoodImageDimensions
+pub fn radroots_event::food::availability::FoodImageDimensions::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::food::availability::FoodImageDimensions
+pub type radroots_event::food::availability::FoodImageDimensions::Err = radroots_event::food::availability::FoodAvailabilityError
+pub fn radroots_event::food::availability::FoodImageDimensions::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub struct radroots_event::food::availability::FoodPrice
+impl radroots_event::food::availability::FoodPrice
+pub fn radroots_event::food::availability::FoodPrice::amount(&self) -> &str
+pub fn radroots_event::food::availability::FoodPrice::currency(&self) -> &radroots_event::food::availability::FoodCurrency
+pub fn radroots_event::food::availability::FoodPrice::new(impl core::convert::Into<alloc::string::String>, radroots_event::food::availability::FoodCurrency, radroots_event::food::availability::FoodUnit) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+pub const fn radroots_event::food::availability::FoodPrice::unit(&self) -> radroots_event::food::availability::FoodUnit
+pub struct radroots_event::food::availability::FoodPublishedAt(_)
+impl radroots_event::food::availability::FoodPublishedAt
+pub const fn radroots_event::food::availability::FoodPublishedAt::as_u64(self) -> u64
+pub const fn radroots_event::food::availability::FoodPublishedAt::new(u64) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+pub fn radroots_event::food::availability::FoodPublishedAt::parse(&str) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+pub const fn radroots_event::food::availability::FoodPublishedAt::validate_created_at(self, u64) -> core::result::Result<(), radroots_event::food::availability::FoodAvailabilityError>
+impl core::fmt::Display for radroots_event::food::availability::FoodPublishedAt
+pub fn radroots_event::food::availability::FoodPublishedAt::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::food::availability::FoodPublishedAt
+pub type radroots_event::food::availability::FoodPublishedAt::Err = radroots_event::food::availability::FoodAvailabilityError
+pub fn radroots_event::food::availability::FoodPublishedAt::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub struct radroots_event::food::availability::FoodQuantity
+impl radroots_event::food::availability::FoodQuantity
+pub fn radroots_event::food::availability::FoodQuantity::amount(&self) -> &str
+pub fn radroots_event::food::availability::FoodQuantity::new(impl core::convert::Into<alloc::string::String>, radroots_event::food::availability::FoodUnit) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+pub const fn radroots_event::food::availability::FoodQuantity::unit(&self) -> radroots_event::food::availability::FoodUnit
+pub struct radroots_event::food::availability::FoodText(_)
+impl radroots_event::food::availability::FoodText
+pub fn radroots_event::food::availability::FoodText::as_str(&self) -> &str
+pub fn radroots_event::food::availability::FoodText::into_string(self) -> alloc::string::String
+pub fn radroots_event::food::availability::FoodText::new(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::food::availability::FoodAvailabilityError>
+impl core::convert::AsRef<str> for radroots_event::food::availability::FoodText
+pub fn radroots_event::food::availability::FoodText::as_ref(&self) -> &str
+impl core::fmt::Display for radroots_event::food::availability::FoodText
+pub fn radroots_event::food::availability::FoodText::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub const radroots_event::food::availability::RADROOTS_FOOD_AVAILABILITY_CONTRACT_ID: &str
+pub const radroots_event::food::availability::RADROOTS_FOOD_CONTENT_MAX_BYTES: usize
+pub const radroots_event::food::availability::RADROOTS_FOOD_DECIMAL_MAX_DIGITS: usize
+pub const radroots_event::food::availability::RADROOTS_FOOD_IDENTIFIER_MAX_BYTES: usize
+pub const radroots_event::food::availability::RADROOTS_FOOD_IMAGE_MAX_COUNT: usize
+pub const radroots_event::food::availability::RADROOTS_FOOD_TEXT_MAX_BYTES: usize
+pub fn radroots_event::food::availability::food_media_blossom_digest(&str) -> core::option::Option<radroots_blossom::hash::Sha256>
+pub fn radroots_event::food::availability::food_media_http_url_is_valid(&str) -> bool
+pub mod radroots_event::generic_draft
+pub struct radroots_event::generic_draft::GenericEventDraft
+impl radroots_event::generic_draft::GenericEventDraft
+pub fn radroots_event::generic_draft::GenericEventDraft::content(&self) -> &str
+pub const fn radroots_event::generic_draft::GenericEventDraft::contract(&self) -> &radroots_event::contract::ContractKey
+pub fn radroots_event::generic_draft::GenericEventDraft::contract_id(&self) -> &str
+pub const fn radroots_event::generic_draft::GenericEventDraft::created_at(&self) -> radroots_event::envelope::EventTimestamp
+pub const fn radroots_event::generic_draft::GenericEventDraft::created_at_u64(&self) -> u64
+pub const fn radroots_event::generic_draft::GenericEventDraft::expected_event_id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event::generic_draft::GenericEventDraft::expected_event_id_hex(&self) -> alloc::string::String
+pub const fn radroots_event::generic_draft::GenericEventDraft::expected_pubkey(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_event::generic_draft::GenericEventDraft::kind(&self) -> radroots_event::envelope::EventKind
+pub const fn radroots_event::generic_draft::GenericEventDraft::kind_u32(&self) -> u32
+pub fn radroots_event::generic_draft::GenericEventDraft::new(impl core::convert::Into<alloc::string::String>, u32, u64, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, impl core::convert::Into<alloc::string::String>, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::draft::DraftError>
+pub fn radroots_event::generic_draft::GenericEventDraft::nip01_preimage(&self) -> core::result::Result<alloc::string::String, radroots_event::draft::DraftError>
+pub const fn radroots_event::generic_draft::GenericEventDraft::tags(&self) -> &radroots_event::envelope::EventTags
+pub fn radroots_event::generic_draft::GenericEventDraft::tags_as_vec(&self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event::generic_draft::GenericEventDraft::validate_for_authoring(&self) -> core::result::Result<(), radroots_event::draft::DraftError>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_event::generic_draft::GenericEventDraft
+pub fn radroots_event::generic_draft::GenericEventDraft::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub mod radroots_event::id
+#[non_exhaustive] pub enum radroots_event::id::Nip01CoordinateParseError
+pub radroots_event::id::Nip01CoordinateParseError::Empty
+pub radroots_event::id::Nip01CoordinateParseError::IdentifierMustBeEmpty
+pub radroots_event::id::Nip01CoordinateParseError::IdentifierMustBeEmpty::kind: u32
+pub radroots_event::id::Nip01CoordinateParseError::InvalidFormat
+pub radroots_event::id::Nip01CoordinateParseError::Pubkey(radroots_event::id::ParseError)
+pub radroots_event::id::Nip01CoordinateParseError::TooLong
+pub radroots_event::id::Nip01CoordinateParseError::TooLong::actual: usize
+pub radroots_event::id::Nip01CoordinateParseError::TooLong::max: usize
+pub radroots_event::id::Nip01CoordinateParseError::UnsupportedKind
+pub radroots_event::id::Nip01CoordinateParseError::UnsupportedKind::actual: u32
+impl core::error::Error for radroots_event::id::Nip01CoordinateParseError
+pub fn radroots_event::id::Nip01CoordinateParseError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event::id::Nip01CoordinateParseError
+pub fn radroots_event::id::Nip01CoordinateParseError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::id::ParseError
+pub radroots_event::id::ParseError::Empty
+pub radroots_event::id::ParseError::InvalidCharacter
+pub radroots_event::id::ParseError::InvalidFormat
+pub radroots_event::id::ParseError::InvalidLength
+pub radroots_event::id::ParseError::InvalidLength::actual: usize
+pub radroots_event::id::ParseError::InvalidLength::expected: usize
+pub radroots_event::id::ParseError::InvalidPublicKey
+pub radroots_event::id::ParseError::TooLong
+pub radroots_event::id::ParseError::TooLong::actual: usize
+pub radroots_event::id::ParseError::TooLong::max: usize
+pub radroots_event::id::ParseError::UnexpectedKind
+pub radroots_event::id::ParseError::UnexpectedKind::actual: u32
+pub radroots_event::id::ParseError::UnexpectedKind::expected: u32
+impl core::convert::From<radroots_event::id::ParseError> for radroots_event::draft::DraftError
+pub fn radroots_event::draft::DraftError::from(radroots_event::id::ParseError) -> Self
+impl core::error::Error for radroots_event::id::ParseError
+impl core::fmt::Display for radroots_event::id::ParseError
+pub fn radroots_event::id::ParseError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::id::AddressableCoordinate(_)
+impl radroots_event::id::AddressableCoordinate
+pub fn radroots_event::id::AddressableCoordinate::as_str(&self) -> &str
+pub fn radroots_event::id::AddressableCoordinate::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::AddressableCoordinate::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+impl core::convert::AsRef<str> for radroots_event::id::AddressableCoordinate
+pub fn radroots_event::id::AddressableCoordinate::as_ref(&self) -> &str
+impl core::convert::From<radroots_event::id::AddressableCoordinate> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::id::AddressableCoordinate) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::AddressableCoordinate
+pub type radroots_event::id::AddressableCoordinate::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::AddressableCoordinate::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::AddressableCoordinate
+pub type radroots_event::id::AddressableCoordinate::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::AddressableCoordinate::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::AddressableCoordinate
+pub fn radroots_event::id::AddressableCoordinate::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::AddressableCoordinate
+pub type radroots_event::id::AddressableCoordinate::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::AddressableCoordinate::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::AddressableCoordinate
+pub fn radroots_event::id::AddressableCoordinate::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_event::id::AddressableCoordinate
+pub fn radroots_event::id::AddressableCoordinate::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::AddressableCoordinateParts
+pub radroots_event::id::AddressableCoordinateParts::d_tag: radroots_event::id::DTag
+pub radroots_event::id::AddressableCoordinateParts::kind: u32
+pub radroots_event::id::AddressableCoordinateParts::pubkey: radroots_identity::key::PublicKey
+impl radroots_event::id::AddressableCoordinateParts
+pub fn radroots_event::id::AddressableCoordinateParts::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub struct radroots_event::id::CandidateId(_)
+impl radroots_event::id::CandidateId
+pub const fn radroots_event::id::CandidateId::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_event::id::CandidateId::from_bytes([u8; 32]) -> Self
+pub const fn radroots_event::id::CandidateId::into_bytes(self) -> [u8; 32]
+pub fn radroots_event::id::CandidateId::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::CandidateId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub fn radroots_event::id::CandidateId::to_hex(&self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_event::id::CandidateId
+pub fn radroots_event::id::CandidateId::as_ref(&self) -> &[u8]
+impl core::convert::From<[u8; 32]> for radroots_event::id::CandidateId
+pub fn radroots_event::id::CandidateId::from([u8; 32]) -> Self
+impl core::convert::From<radroots_event::id::CandidateId> for [u8; 32]
+pub fn [u8; 32]::from(radroots_event::id::CandidateId) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::CandidateId
+pub type radroots_event::id::CandidateId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::CandidateId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::CandidateId
+pub type radroots_event::id::CandidateId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::CandidateId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::CandidateId
+pub fn radroots_event::id::CandidateId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::CandidateId
+pub type radroots_event::id::CandidateId::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::CandidateId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::CandidateId
+pub fn radroots_event::id::CandidateId::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_event::id::CandidateId
+pub fn radroots_event::id::CandidateId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::ClassifiedListingAddress(_)
+impl radroots_event::id::ClassifiedListingAddress
+pub fn radroots_event::id::ClassifiedListingAddress::as_str(&self) -> &str
+pub fn radroots_event::id::ClassifiedListingAddress::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::ClassifiedListingAddress::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+impl core::convert::AsRef<str> for radroots_event::id::ClassifiedListingAddress
+pub fn radroots_event::id::ClassifiedListingAddress::as_ref(&self) -> &str
+impl core::convert::From<radroots_event::id::ClassifiedListingAddress> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::id::ClassifiedListingAddress) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::ClassifiedListingAddress
+pub type radroots_event::id::ClassifiedListingAddress::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::ClassifiedListingAddress::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::ClassifiedListingAddress
+pub type radroots_event::id::ClassifiedListingAddress::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::ClassifiedListingAddress::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::ClassifiedListingAddress
+pub fn radroots_event::id::ClassifiedListingAddress::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::ClassifiedListingAddress
+pub type radroots_event::id::ClassifiedListingAddress::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::ClassifiedListingAddress::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::ClassifiedListingAddress
+pub fn radroots_event::id::ClassifiedListingAddress::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_event::id::ClassifiedListingAddress
+pub fn radroots_event::id::ClassifiedListingAddress::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::DTag(_)
+impl radroots_event::id::DTag
+pub fn radroots_event::id::DTag::as_str(&self) -> &str
+pub fn radroots_event::id::DTag::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::DTag::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+impl core::convert::AsRef<str> for radroots_event::id::DTag
+pub fn radroots_event::id::DTag::as_ref(&self) -> &str
+impl core::convert::From<radroots_event::id::DTag> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::id::DTag) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::DTag
+pub type radroots_event::id::DTag::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::DTag::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::DTag
+pub type radroots_event::id::DTag::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::DTag::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::DTag
+pub fn radroots_event::id::DTag::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::DTag
+pub type radroots_event::id::DTag::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::DTag::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::DTag
+pub fn radroots_event::id::DTag::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_event::id::DTag
+pub fn radroots_event::id::DTag::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::EconomicsDigest(_)
+impl radroots_event::id::EconomicsDigest
+pub fn radroots_event::id::EconomicsDigest::as_str(&self) -> &str
+pub fn radroots_event::id::EconomicsDigest::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::EconomicsDigest::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+impl core::convert::AsRef<str> for radroots_event::id::EconomicsDigest
+pub fn radroots_event::id::EconomicsDigest::as_ref(&self) -> &str
+impl core::convert::From<radroots_event::id::EconomicsDigest> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::id::EconomicsDigest) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::EconomicsDigest
+pub type radroots_event::id::EconomicsDigest::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::EconomicsDigest::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::EconomicsDigest
+pub type radroots_event::id::EconomicsDigest::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::EconomicsDigest::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::EconomicsDigest
+pub fn radroots_event::id::EconomicsDigest::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::EconomicsDigest
+pub type radroots_event::id::EconomicsDigest::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::EconomicsDigest::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::EconomicsDigest
+pub fn radroots_event::id::EconomicsDigest::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_event::id::EconomicsDigest
+pub fn radroots_event::id::EconomicsDigest::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::EventEnvelopePointer
+pub radroots_event::id::EventEnvelopePointer::event_id: radroots_event::id::EventId
+pub radroots_event::id::EventEnvelopePointer::relays: alloc::vec::Vec<alloc::string::String>
+impl radroots_event::id::EventEnvelopePointer
+pub fn radroots_event::id::EventEnvelopePointer::new<I, S>(radroots_event::id::EventId, I) -> core::result::Result<Self, radroots_event::id::ParseError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::Into<alloc::string::String>
+pub struct radroots_event::id::EventId(_)
+impl radroots_event::id::EventId
+pub const fn radroots_event::id::EventId::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_event::id::EventId::from_bytes([u8; 32]) -> Self
+pub const fn radroots_event::id::EventId::into_bytes(self) -> [u8; 32]
+pub fn radroots_event::id::EventId::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::EventId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub fn radroots_event::id::EventId::to_hex(&self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_event::id::EventId
+pub fn radroots_event::id::EventId::as_ref(&self) -> &[u8]
+impl core::convert::From<[u8; 32]> for radroots_event::id::EventId
+pub fn radroots_event::id::EventId::from([u8; 32]) -> Self
+impl core::convert::From<radroots_event::id::EventId> for [u8; 32]
+pub fn [u8; 32]::from(radroots_event::id::EventId) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::EventId
+pub type radroots_event::id::EventId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::EventId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::EventId
+pub type radroots_event::id::EventId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::EventId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::EventId
+pub fn radroots_event::id::EventId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::EventId
+pub type radroots_event::id::EventId::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::EventId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::EventId
+pub fn radroots_event::id::EventId::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_event::id::EventId
+pub fn radroots_event::id::EventId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::EventPointer(_)
+impl radroots_event::id::EventPointer
+pub const fn radroots_event::id::EventPointer::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_event::id::EventPointer::from_bytes([u8; 32]) -> Self
+pub const fn radroots_event::id::EventPointer::into_bytes(self) -> [u8; 32]
+pub fn radroots_event::id::EventPointer::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::EventPointer::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub fn radroots_event::id::EventPointer::to_hex(&self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_event::id::EventPointer
+pub fn radroots_event::id::EventPointer::as_ref(&self) -> &[u8]
+impl core::convert::From<[u8; 32]> for radroots_event::id::EventPointer
+pub fn radroots_event::id::EventPointer::from([u8; 32]) -> Self
+impl core::convert::From<radroots_event::id::EventPointer> for [u8; 32]
+pub fn [u8; 32]::from(radroots_event::id::EventPointer) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::EventPointer
+pub type radroots_event::id::EventPointer::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::EventPointer::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::EventPointer
+pub type radroots_event::id::EventPointer::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::EventPointer::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::EventPointer
+pub fn radroots_event::id::EventPointer::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::EventPointer
+pub type radroots_event::id::EventPointer::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::EventPointer::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::EventPointer
+pub fn radroots_event::id::EventPointer::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_event::id::EventPointer
+pub fn radroots_event::id::EventPointer::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::EventSignature(_)
+impl radroots_event::id::EventSignature
+pub const fn radroots_event::id::EventSignature::as_bytes(&self) -> &[u8; 64]
+pub const fn radroots_event::id::EventSignature::from_bytes([u8; 64]) -> Self
+pub const fn radroots_event::id::EventSignature::into_bytes(self) -> [u8; 64]
+pub fn radroots_event::id::EventSignature::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::EventSignature::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub fn radroots_event::id::EventSignature::to_hex(&self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_event::id::EventSignature
+pub fn radroots_event::id::EventSignature::as_ref(&self) -> &[u8]
+impl core::convert::From<[u8; 64]> for radroots_event::id::EventSignature
+pub fn radroots_event::id::EventSignature::from([u8; 64]) -> Self
+impl core::convert::From<radroots_event::id::EventSignature> for [u8; 64]
+pub fn [u8; 64]::from(radroots_event::id::EventSignature) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::EventSignature
+pub type radroots_event::id::EventSignature::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::EventSignature::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::EventSignature
+pub type radroots_event::id::EventSignature::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::EventSignature::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::EventSignature
+pub fn radroots_event::id::EventSignature::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::EventSignature
+pub type radroots_event::id::EventSignature::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::EventSignature::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::EventSignature
+pub fn radroots_event::id::EventSignature::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_event::id::EventSignature
+pub fn radroots_event::id::EventSignature::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::InventoryBinId(_)
+impl radroots_event::id::InventoryBinId
+pub fn radroots_event::id::InventoryBinId::as_str(&self) -> &str
+pub fn radroots_event::id::InventoryBinId::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::InventoryBinId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+impl core::convert::AsRef<str> for radroots_event::id::InventoryBinId
+pub fn radroots_event::id::InventoryBinId::as_ref(&self) -> &str
+impl core::convert::From<radroots_event::id::InventoryBinId> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::id::InventoryBinId) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::InventoryBinId
+pub type radroots_event::id::InventoryBinId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::InventoryBinId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::InventoryBinId
+pub type radroots_event::id::InventoryBinId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::InventoryBinId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::InventoryBinId
+pub fn radroots_event::id::InventoryBinId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::InventoryBinId
+pub type radroots_event::id::InventoryBinId::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::InventoryBinId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::InventoryBinId
+pub fn radroots_event::id::InventoryBinId::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_event::id::InventoryBinId
+pub fn radroots_event::id::InventoryBinId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::MutationId(_)
+impl radroots_event::id::MutationId
+pub const fn radroots_event::id::MutationId::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_event::id::MutationId::from_bytes([u8; 32]) -> Self
+pub const fn radroots_event::id::MutationId::into_bytes(self) -> [u8; 32]
+pub fn radroots_event::id::MutationId::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::MutationId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub fn radroots_event::id::MutationId::to_hex(&self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_event::id::MutationId
+pub fn radroots_event::id::MutationId::as_ref(&self) -> &[u8]
+impl core::convert::From<[u8; 32]> for radroots_event::id::MutationId
+pub fn radroots_event::id::MutationId::from([u8; 32]) -> Self
+impl core::convert::From<radroots_event::id::MutationId> for [u8; 32]
+pub fn [u8; 32]::from(radroots_event::id::MutationId) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::MutationId
+pub type radroots_event::id::MutationId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::MutationId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::MutationId
+pub type radroots_event::id::MutationId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::MutationId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::MutationId
+pub fn radroots_event::id::MutationId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::MutationId
+pub type radroots_event::id::MutationId::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::MutationId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::MutationId
+pub fn radroots_event::id::MutationId::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_event::id::MutationId
+pub fn radroots_event::id::MutationId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::Nip01Coordinate
+impl radroots_event::id::Nip01Coordinate
+pub fn radroots_event::id::Nip01Coordinate::as_str(&self) -> &str
+pub fn radroots_event::id::Nip01Coordinate::identifier(&self) -> &str
+pub fn radroots_event::id::Nip01Coordinate::into_parts(self) -> radroots_event::id::Nip01CoordinateParts
+pub fn radroots_event::id::Nip01Coordinate::into_string(self) -> alloc::string::String
+pub const fn radroots_event::id::Nip01Coordinate::kind(&self) -> u32
+pub fn radroots_event::id::Nip01Coordinate::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::Nip01CoordinateParseError>
+pub fn radroots_event::id::Nip01Coordinate::parts(&self) -> radroots_event::id::Nip01CoordinateParts
+pub const fn radroots_event::id::Nip01Coordinate::pubkey(&self) -> &radroots_identity::key::PublicKey
+impl core::convert::AsRef<str> for radroots_event::id::Nip01Coordinate
+pub fn radroots_event::id::Nip01Coordinate::as_ref(&self) -> &str
+impl core::convert::From<radroots_event::id::Nip01Coordinate> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::id::Nip01Coordinate) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::Nip01Coordinate
+pub type radroots_event::id::Nip01Coordinate::Error = radroots_event::id::Nip01CoordinateParseError
+pub fn radroots_event::id::Nip01Coordinate::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::Nip01Coordinate
+pub type radroots_event::id::Nip01Coordinate::Error = radroots_event::id::Nip01CoordinateParseError
+pub fn radroots_event::id::Nip01Coordinate::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::Nip01Coordinate
+pub fn radroots_event::id::Nip01Coordinate::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::Nip01Coordinate
+pub type radroots_event::id::Nip01Coordinate::Err = radroots_event::id::Nip01CoordinateParseError
+pub fn radroots_event::id::Nip01Coordinate::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::Nip01Coordinate
+pub fn radroots_event::id::Nip01Coordinate::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_event::id::Nip01Coordinate
+pub fn radroots_event::id::Nip01Coordinate::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::Nip01CoordinateParts
+pub radroots_event::id::Nip01CoordinateParts::identifier: alloc::string::String
+pub radroots_event::id::Nip01CoordinateParts::kind: u32
+pub radroots_event::id::Nip01CoordinateParts::pubkey: radroots_identity::key::PublicKey
+impl radroots_event::id::Nip01CoordinateParts
+pub fn radroots_event::id::Nip01CoordinateParts::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::Nip01CoordinateParseError>
+pub struct radroots_event::id::OrderId(_)
+impl radroots_event::id::OrderId
+pub fn radroots_event::id::OrderId::as_str(&self) -> &str
+pub fn radroots_event::id::OrderId::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::OrderId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+impl core::convert::AsRef<str> for radroots_event::id::OrderId
+pub fn radroots_event::id::OrderId::as_ref(&self) -> &str
+impl core::convert::From<radroots_event::id::OrderId> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::id::OrderId) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::OrderId
+pub type radroots_event::id::OrderId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::OrderId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::OrderId
+pub type radroots_event::id::OrderId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::OrderId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::OrderId
+pub fn radroots_event::id::OrderId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::OrderId
+pub type radroots_event::id::OrderId::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::OrderId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::OrderId
+pub fn radroots_event::id::OrderId::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_event::id::OrderId
+pub fn radroots_event::id::OrderId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::OrderQuoteId(_)
+impl radroots_event::id::OrderQuoteId
+pub fn radroots_event::id::OrderQuoteId::as_str(&self) -> &str
+pub fn radroots_event::id::OrderQuoteId::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::OrderQuoteId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+impl core::convert::AsRef<str> for radroots_event::id::OrderQuoteId
+pub fn radroots_event::id::OrderQuoteId::as_ref(&self) -> &str
+impl core::convert::From<radroots_event::id::OrderQuoteId> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::id::OrderQuoteId) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::OrderQuoteId
+pub type radroots_event::id::OrderQuoteId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::OrderQuoteId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::OrderQuoteId
+pub type radroots_event::id::OrderQuoteId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::OrderQuoteId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::OrderQuoteId
+pub fn radroots_event::id::OrderQuoteId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::OrderQuoteId
+pub type radroots_event::id::OrderQuoteId::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::OrderQuoteId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::OrderQuoteId
+pub fn radroots_event::id::OrderQuoteId::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_event::id::OrderQuoteId
+pub fn radroots_event::id::OrderQuoteId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::RelayUrl(_)
+impl radroots_event::id::RelayUrl
+pub fn radroots_event::id::RelayUrl::as_str(&self) -> &str
+pub fn radroots_event::id::RelayUrl::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::RelayUrl::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+impl core::convert::AsRef<str> for radroots_event::id::RelayUrl
+pub fn radroots_event::id::RelayUrl::as_ref(&self) -> &str
+impl core::convert::From<radroots_event::id::RelayUrl> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::id::RelayUrl) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::RelayUrl
+pub type radroots_event::id::RelayUrl::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::RelayUrl::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::RelayUrl
+pub type radroots_event::id::RelayUrl::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::RelayUrl::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::RelayUrl
+pub fn radroots_event::id::RelayUrl::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::RelayUrl
+pub type radroots_event::id::RelayUrl::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::RelayUrl::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::RelayUrl
+pub fn radroots_event::id::RelayUrl::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_event::id::RelayUrl
+pub fn radroots_event::id::RelayUrl::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::id::TradeId(_)
+impl radroots_event::id::TradeId
+pub const fn radroots_event::id::TradeId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_event::id::TradeId::from_bytes([u8; 16]) -> Self
+pub const fn radroots_event::id::TradeId::into_bytes(self) -> [u8; 16]
+pub fn radroots_event::id::TradeId::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::TradeId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub fn radroots_event::id::TradeId::to_hex(&self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_event::id::TradeId
+pub fn radroots_event::id::TradeId::as_ref(&self) -> &[u8]
+impl core::convert::From<[u8; 16]> for radroots_event::id::TradeId
+pub fn radroots_event::id::TradeId::from([u8; 16]) -> Self
+impl core::convert::From<radroots_event::id::TradeId> for [u8; 16]
+pub fn [u8; 16]::from(radroots_event::id::TradeId) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::TradeId
+pub type radroots_event::id::TradeId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::TradeId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::TradeId
+pub type radroots_event::id::TradeId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::TradeId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::TradeId
+pub fn radroots_event::id::TradeId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::TradeId
+pub type radroots_event::id::TradeId::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::TradeId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::TradeId
+pub fn radroots_event::id::TradeId::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_event::id::TradeId
+pub fn radroots_event::id::TradeId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub const radroots_event::id::RADROOTS_NIP01_COORDINATE_MAX_BYTES: usize
+pub fn radroots_event::id::relay_url_is_valid(&str) -> bool
+pub mod radroots_event::knowledge
+pub enum radroots_event::knowledge::KnowledgeLocationPrecision
+pub radroots_event::knowledge::KnowledgeLocationPrecision::CoarseGeohash
+pub radroots_event::knowledge::KnowledgeLocationPrecision::ExactPrivateReference
+pub radroots_event::knowledge::KnowledgeLocationPrecision::ExactPublic
+pub radroots_event::knowledge::KnowledgeLocationPrecision::Locality
+pub radroots_event::knowledge::KnowledgeLocationPrecision::None
+pub radroots_event::knowledge::KnowledgeLocationPrecision::Region
+pub enum radroots_event::knowledge::KnowledgeReviewScope
+pub radroots_event::knowledge::KnowledgeReviewScope::AddressableCoordinateAtPublishedAt
+pub radroots_event::knowledge::KnowledgeReviewScope::PolicyLatest
+pub radroots_event::knowledge::KnowledgeReviewScope::SpecificVersion
+pub enum radroots_event::knowledge::KnowledgeValidationError
+pub radroots_event::knowledge::KnowledgeValidationError::EmptyField(&'static str)
+pub radroots_event::knowledge::KnowledgeValidationError::InvalidField(&'static str)
+impl radroots_event::knowledge::KnowledgeValidationError
+pub const fn radroots_event::knowledge::KnowledgeValidationError::code(self) -> &'static str
+pub const fn radroots_event::knowledge::KnowledgeValidationError::field(self) -> &'static str
+impl core::error::Error for radroots_event::knowledge::KnowledgeValidationError
+impl core::fmt::Display for radroots_event::knowledge::KnowledgeValidationError
+pub fn radroots_event::knowledge::KnowledgeValidationError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::knowledge::WikiDTagError
+pub radroots_event::knowledge::WikiDTagError::Empty
+pub radroots_event::knowledge::WikiDTagError::NotNormalized
+pub radroots_event::knowledge::WikiDTagError::NotNormalized::normalized: alloc::string::String
+pub radroots_event::knowledge::WikiDTagError::TooLong
+pub radroots_event::knowledge::WikiDTagError::TooLong::actual: usize
+pub radroots_event::knowledge::WikiDTagError::TooLong::max: usize
+impl radroots_event::knowledge::WikiDTagError
+pub const fn radroots_event::knowledge::WikiDTagError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::knowledge::WikiDTagError
+impl core::fmt::Display for radroots_event::knowledge::WikiDTagError
+pub fn radroots_event::knowledge::WikiDTagError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::knowledge::AddressableRef
+pub radroots_event::knowledge::AddressableRef::d_tag: alloc::string::String
+pub radroots_event::knowledge::AddressableRef::kind: u32
+pub radroots_event::knowledge::AddressableRef::pubkey: alloc::string::String
+pub radroots_event::knowledge::AddressableRef::relays: alloc::vec::Vec<alloc::string::String>
+pub struct radroots_event::knowledge::ContributionAttestation
+pub radroots_event::knowledge::ContributionAttestation::contribution_type: alloc::string::String
+pub radroots_event::knowledge::ContributionAttestation::contributor_pubkey: alloc::string::String
+pub radroots_event::knowledge::ContributionAttestation::evidence_refs: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::ContributionAttestation::schema: alloc::string::String
+pub radroots_event::knowledge::ContributionAttestation::schema_version: u16
+pub radroots_event::knowledge::ContributionAttestation::subject_refs: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::ContributionAttestation::summary: alloc::string::String
+pub struct radroots_event::knowledge::EvidenceBounty
+pub radroots_event::knowledge::EvidenceBounty::closes_at: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::EvidenceBounty::d_tag: alloc::string::String
+pub radroots_event::knowledge::EvidenceBounty::reward_note: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::EvidenceBounty::schema: alloc::string::String
+pub radroots_event::knowledge::EvidenceBounty::schema_version: u16
+pub radroots_event::knowledge::EvidenceBounty::summary: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::EvidenceBounty::target_refs: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::EvidenceBounty::title: alloc::string::String
+pub radroots_event::knowledge::EvidenceBounty::topics: alloc::vec::Vec<alloc::string::String>
+pub struct radroots_event::knowledge::KnowledgeChangeProposal
+pub radroots_event::knowledge::KnowledgeChangeProposal::evidence_refs: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::KnowledgeChangeProposal::proposal_type: alloc::string::String
+pub radroots_event::knowledge::KnowledgeChangeProposal::rationale: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeChangeProposal::schema: alloc::string::String
+pub radroots_event::knowledge::KnowledgeChangeProposal::schema_version: u16
+pub radroots_event::knowledge::KnowledgeChangeProposal::summary: alloc::string::String
+pub radroots_event::knowledge::KnowledgeChangeProposal::supersedes: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::KnowledgeChangeProposal::target: radroots_event::tag::EventRef
+pub struct radroots_event::knowledge::KnowledgeCitationSpan
+pub radroots_event::knowledge::KnowledgeCitationSpan::artifact_ref: core::option::Option<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::KnowledgeCitationSpan::chunk_id: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeCitationSpan::page_end: core::option::Option<u32>
+pub radroots_event::knowledge::KnowledgeCitationSpan::page_start: core::option::Option<u32>
+pub radroots_event::knowledge::KnowledgeCitationSpan::quote_hash: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeCitationSpan::section_path: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeCitationSpan::source_ref: radroots_event::tag::EventRef
+pub struct radroots_event::knowledge::KnowledgeClaim
+pub radroots_event::knowledge::KnowledgeClaim::applies_to: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeClaim::author_asserted_confidence: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeClaim::citation_spans: alloc::vec::Vec<radroots_event::knowledge::KnowledgeCitationSpan>
+pub radroots_event::knowledge::KnowledgeClaim::claim_type: alloc::string::String
+pub radroots_event::knowledge::KnowledgeClaim::schema: alloc::string::String
+pub radroots_event::knowledge::KnowledgeClaim::schema_version: u16
+pub radroots_event::knowledge::KnowledgeClaim::supersedes: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::KnowledgeClaim::text: alloc::string::String
+pub radroots_event::knowledge::KnowledgeClaim::topics: alloc::vec::Vec<alloc::string::String>
+pub struct radroots_event::knowledge::KnowledgeFieldContext
+pub radroots_event::knowledge::KnowledgeFieldContext::context_tags: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeFieldContext::location_precision: radroots_event::knowledge::KnowledgeLocationPrecision
+pub radroots_event::knowledge::KnowledgeFieldContext::private_location_ref: core::option::Option<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::KnowledgeFieldContext::public_location: core::option::Option<radroots_event::knowledge::KnowledgeLocation>
+pub radroots_event::knowledge::KnowledgeFieldContext::topics: alloc::vec::Vec<alloc::string::String>
+pub struct radroots_event::knowledge::KnowledgeFieldReport
+pub radroots_event::knowledge::KnowledgeFieldReport::artifact_refs: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::KnowledgeFieldReport::context: radroots_event::knowledge::KnowledgeFieldContext
+pub radroots_event::knowledge::KnowledgeFieldReport::limitations: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeFieldReport::observations: alloc::vec::Vec<radroots_event::knowledge::KnowledgeObservation>
+pub radroots_event::knowledge::KnowledgeFieldReport::related_refs: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::KnowledgeFieldReport::report_type: alloc::string::String
+pub radroots_event::knowledge::KnowledgeFieldReport::schema: alloc::string::String
+pub radroots_event::knowledge::KnowledgeFieldReport::schema_version: u16
+pub radroots_event::knowledge::KnowledgeFieldReport::summary: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeFieldReport::title: alloc::string::String
+pub struct radroots_event::knowledge::KnowledgeLocation
+pub radroots_event::knowledge::KnowledgeLocation::geohash: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeLocation::label: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeLocation::locality: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeLocation::region: core::option::Option<alloc::string::String>
+pub struct radroots_event::knowledge::KnowledgeNodeRef
+pub radroots_event::knowledge::KnowledgeNodeRef::address_ref: core::option::Option<radroots_event::knowledge::AddressableRef>
+pub radroots_event::knowledge::KnowledgeNodeRef::event_ref: core::option::Option<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::KnowledgeNodeRef::external_id: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeNodeRef::label: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeNodeRef::node_type: alloc::string::String
+pub struct radroots_event::knowledge::KnowledgeObservation
+pub radroots_event::knowledge::KnowledgeObservation::observation_type: alloc::string::String
+pub radroots_event::knowledge::KnowledgeObservation::observed_at: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeObservation::text: alloc::string::String
+pub radroots_event::knowledge::KnowledgeObservation::values: alloc::vec::Vec<radroots_event::knowledge::KnowledgeObservationValue>
+pub struct radroots_event::knowledge::KnowledgeObservationValue
+pub radroots_event::knowledge::KnowledgeObservationValue::key: alloc::string::String
+pub radroots_event::knowledge::KnowledgeObservationValue::unit: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeObservationValue::value: alloc::string::String
+pub struct radroots_event::knowledge::KnowledgeRelation
+pub radroots_event::knowledge::KnowledgeRelation::author_asserted_confidence: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeRelation::object: radroots_event::knowledge::KnowledgeNodeRef
+pub radroots_event::knowledge::KnowledgeRelation::predicate: alloc::string::String
+pub radroots_event::knowledge::KnowledgeRelation::schema: alloc::string::String
+pub radroots_event::knowledge::KnowledgeRelation::schema_version: u16
+pub radroots_event::knowledge::KnowledgeRelation::subject: radroots_event::knowledge::KnowledgeNodeRef
+pub radroots_event::knowledge::KnowledgeRelation::supersedes: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::KnowledgeRelation::support_refs: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub struct radroots_event::knowledge::KnowledgeReview
+pub radroots_event::knowledge::KnowledgeReview::evidence_refs: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::KnowledgeReview::notes: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeReview::reviewer_role: alloc::string::String
+pub radroots_event::knowledge::KnowledgeReview::schema: alloc::string::String
+pub radroots_event::knowledge::KnowledgeReview::schema_version: u16
+pub radroots_event::knowledge::KnowledgeReview::scores: alloc::vec::Vec<radroots_event::knowledge::KnowledgeReviewScore>
+pub radroots_event::knowledge::KnowledgeReview::target: radroots_event::knowledge::KnowledgeReviewTarget
+pub radroots_event::knowledge::KnowledgeReview::verdict: alloc::string::String
+pub struct radroots_event::knowledge::KnowledgeReviewScore
+pub radroots_event::knowledge::KnowledgeReviewScore::dimension: alloc::string::String
+pub radroots_event::knowledge::KnowledgeReviewScore::note: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeReviewScore::value: alloc::string::String
+pub struct radroots_event::knowledge::KnowledgeReviewTarget
+pub radroots_event::knowledge::KnowledgeReviewTarget::address: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeReviewTarget::author_pubkey: alloc::string::String
+pub radroots_event::knowledge::KnowledgeReviewTarget::event_id: alloc::string::String
+pub radroots_event::knowledge::KnowledgeReviewTarget::kind: u32
+pub radroots_event::knowledge::KnowledgeReviewTarget::relays: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeReviewTarget::review_scope: radroots_event::knowledge::KnowledgeReviewScope
+pub struct radroots_event::knowledge::KnowledgeSource
+pub radroots_event::knowledge::KnowledgeSource::artifact_refs: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::KnowledgeSource::author_asserted_rights: core::option::Option<radroots_event::knowledge::RightsAssertion>
+pub radroots_event::knowledge::KnowledgeSource::authors: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeSource::canonical_url: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeSource::d_tag: alloc::string::String
+pub radroots_event::knowledge::KnowledgeSource::edition: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeSource::publication_year: core::option::Option<u16>
+pub radroots_event::knowledge::KnowledgeSource::publisher: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeSource::schema: alloc::string::String
+pub radroots_event::knowledge::KnowledgeSource::schema_version: u16
+pub radroots_event::knowledge::KnowledgeSource::source_type: alloc::string::String
+pub radroots_event::knowledge::KnowledgeSource::summary: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::KnowledgeSource::title: alloc::string::String
+pub radroots_event::knowledge::KnowledgeSource::topics: alloc::vec::Vec<alloc::string::String>
+pub struct radroots_event::knowledge::RightsAssertion
+pub radroots_event::knowledge::RightsAssertion::assertion: alloc::string::String
+pub radroots_event::knowledge::RightsAssertion::holder: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::RightsAssertion::license: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::RightsAssertion::url: core::option::Option<alloc::string::String>
+pub struct radroots_event::knowledge::WikiArticle
+pub radroots_event::knowledge::WikiArticle::content_djot: alloc::string::String
+pub radroots_event::knowledge::WikiArticle::d_tag: alloc::string::String
+pub radroots_event::knowledge::WikiArticle::deferred_to: core::option::Option<radroots_event::knowledge::WikiArticleVersionRef>
+pub radroots_event::knowledge::WikiArticle::forked_from: alloc::vec::Vec<radroots_event::knowledge::WikiArticleVersionRef>
+pub radroots_event::knowledge::WikiArticle::references: alloc::vec::Vec<radroots_event::tag::EventRef>
+pub radroots_event::knowledge::WikiArticle::summary: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::WikiArticle::title: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::WikiArticle::topics: alloc::vec::Vec<alloc::string::String>
+pub struct radroots_event::knowledge::WikiArticleVersionRef
+pub radroots_event::knowledge::WikiArticleVersionRef::address_ref: radroots_event::knowledge::AddressableRef
+pub radroots_event::knowledge::WikiArticleVersionRef::event_id: alloc::string::String
+pub struct radroots_event::knowledge::WikiMergeRequest
+pub radroots_event::knowledge::WikiMergeRequest::base_version_event_id: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::WikiMergeRequest::destination_pubkey: alloc::string::String
+pub radroots_event::knowledge::WikiMergeRequest::explanation: core::option::Option<alloc::string::String>
+pub radroots_event::knowledge::WikiMergeRequest::source_version_event_id: alloc::string::String
+pub radroots_event::knowledge::WikiMergeRequest::target_article: radroots_event::knowledge::AddressableRef
+pub struct radroots_event::knowledge::WikiRedirect
+pub radroots_event::knowledge::WikiRedirect::d_tag: alloc::string::String
+pub radroots_event::knowledge::WikiRedirect::target: radroots_event::knowledge::AddressableRef
+pub const radroots_event::knowledge::RADROOTS_CONTRIBUTION_ATTESTATION_SCHEMA: &str
+pub const radroots_event::knowledge::RADROOTS_EVIDENCE_BOUNTY_SCHEMA: &str
+pub const radroots_event::knowledge::RADROOTS_KNOWLEDGE_CHANGE_PROPOSAL_SCHEMA: &str
+pub const radroots_event::knowledge::RADROOTS_KNOWLEDGE_CLAIM_SCHEMA: &str
+pub const radroots_event::knowledge::RADROOTS_KNOWLEDGE_FIELD_REPORT_SCHEMA: &str
+pub const radroots_event::knowledge::RADROOTS_KNOWLEDGE_RELATION_SCHEMA: &str
+pub const radroots_event::knowledge::RADROOTS_KNOWLEDGE_REVIEW_SCHEMA: &str
+pub const radroots_event::knowledge::RADROOTS_KNOWLEDGE_SCHEMA_VERSION: u16
+pub const radroots_event::knowledge::RADROOTS_KNOWLEDGE_SOURCE_SCHEMA: &str
+pub const radroots_event::knowledge::RADROOTS_WIKI_D_TAG_MAX_LEN: usize
+pub fn radroots_event::knowledge::is_uncited_knowledge_claim_type(&str) -> bool
+pub fn radroots_event::knowledge::normalize_wiki_d_tag(&str) -> alloc::string::String
+pub fn radroots_event::knowledge::validate_contribution_attestation(&radroots_event::knowledge::ContributionAttestation) -> core::result::Result<(), radroots_event::knowledge::KnowledgeValidationError>
+pub fn radroots_event::knowledge::validate_evidence_bounty(&radroots_event::knowledge::EvidenceBounty) -> core::result::Result<(), radroots_event::knowledge::KnowledgeValidationError>
+pub fn radroots_event::knowledge::validate_knowledge_change_proposal(&radroots_event::knowledge::KnowledgeChangeProposal) -> core::result::Result<(), radroots_event::knowledge::KnowledgeValidationError>
+pub fn radroots_event::knowledge::validate_knowledge_claim(&radroots_event::knowledge::KnowledgeClaim) -> core::result::Result<(), radroots_event::knowledge::KnowledgeValidationError>
+pub fn radroots_event::knowledge::validate_knowledge_field_report(&radroots_event::knowledge::KnowledgeFieldReport) -> core::result::Result<(), radroots_event::knowledge::KnowledgeValidationError>
+pub fn radroots_event::knowledge::validate_knowledge_relation(&radroots_event::knowledge::KnowledgeRelation) -> core::result::Result<(), radroots_event::knowledge::KnowledgeValidationError>
+pub fn radroots_event::knowledge::validate_knowledge_review(&radroots_event::knowledge::KnowledgeReview) -> core::result::Result<(), radroots_event::knowledge::KnowledgeValidationError>
+pub fn radroots_event::knowledge::validate_knowledge_source(&radroots_event::knowledge::KnowledgeSource) -> core::result::Result<(), radroots_event::knowledge::KnowledgeValidationError>
+pub fn radroots_event::knowledge::validate_wiki_article(&radroots_event::knowledge::WikiArticle) -> core::result::Result<(), radroots_event::knowledge::KnowledgeValidationError>
+pub fn radroots_event::knowledge::validate_wiki_d_tag(&str) -> core::result::Result<(), radroots_event::knowledge::WikiDTagError>
+pub fn radroots_event::knowledge::validate_wiki_merge_request(&radroots_event::knowledge::WikiMergeRequest) -> core::result::Result<(), radroots_event::knowledge::KnowledgeValidationError>
+pub fn radroots_event::knowledge::validate_wiki_redirect(&radroots_event::knowledge::WikiRedirect) -> core::result::Result<(), radroots_event::knowledge::KnowledgeValidationError>
+pub mod radroots_event::listing
+pub mod radroots_event::listing::classified
+pub enum radroots_event::listing::classified::ClassifiedListingPartition
+pub radroots_event::listing::classified::ClassifiedListingPartition::Ambiguous
+pub radroots_event::listing::classified::ClassifiedListingPartition::FocusedFoodAvailability
+pub radroots_event::listing::classified::ClassifiedListingPartition::GenericNip99
+pub radroots_event::listing::classified::ClassifiedListingPartition::OperationalListing
+pub const radroots_event::listing::classified::TAG_RADROOTS_BIN: &str
+pub const radroots_event::listing::classified::TAG_RADROOTS_PRICE: &str
+pub const radroots_event::listing::classified::TAG_RADROOTS_PRICE_UNIT: &str
+pub const radroots_event::listing::classified::TAG_RADROOTS_PRIMARY_BIN: &str
+pub const radroots_event::listing::classified::TAG_RADROOTS_QUANTITY: &str
+pub fn radroots_event::listing::classified::classify_classified_listing_marker_names<'a>(impl core::iter::traits::collect::IntoIterator<Item = core::option::Option<&'a str>>) -> radroots_event::listing::classified::ClassifiedListingPartition
+pub fn radroots_event::listing::classified::classify_classified_listing_tag_slice(&[radroots_event::envelope::EventTag]) -> radroots_event::listing::classified::ClassifiedListingPartition
+pub fn radroots_event::listing::classified::classify_classified_listing_tags(&radroots_event::envelope::EventTags) -> radroots_event::listing::classified::ClassifiedListingPartition
+pub mod radroots_event::listing::operational
+pub enum radroots_event::listing::operational::OperationalListingAvailability
+pub radroots_event::listing::operational::OperationalListingAvailability::Status
+pub radroots_event::listing::operational::OperationalListingAvailability::Status::status: radroots_event::listing::operational::OperationalListingStatus
+pub radroots_event::listing::operational::OperationalListingAvailability::Window
+pub radroots_event::listing::operational::OperationalListingAvailability::Window::end: core::option::Option<u64>
+pub radroots_event::listing::operational::OperationalListingAvailability::Window::start: core::option::Option<u64>
+pub enum radroots_event::listing::operational::OperationalListingDeliveryMethod
+pub radroots_event::listing::operational::OperationalListingDeliveryMethod::LocalDelivery
+pub radroots_event::listing::operational::OperationalListingDeliveryMethod::Other
+pub radroots_event::listing::operational::OperationalListingDeliveryMethod::Other::method: alloc::string::String
+pub radroots_event::listing::operational::OperationalListingDeliveryMethod::Pickup
+pub radroots_event::listing::operational::OperationalListingDeliveryMethod::Shipping
+pub enum radroots_event::listing::operational::OperationalListingParseError
+pub radroots_event::listing::operational::OperationalListingParseError::InvalidCurrency
+pub radroots_event::listing::operational::OperationalListingParseError::InvalidDiscount(alloc::string::String)
+pub radroots_event::listing::operational::OperationalListingParseError::InvalidJson(alloc::string::String)
+pub radroots_event::listing::operational::OperationalListingParseError::InvalidKind(u32)
+pub radroots_event::listing::operational::OperationalListingParseError::InvalidNumber(alloc::string::String)
+pub radroots_event::listing::operational::OperationalListingParseError::InvalidTag(alloc::string::String)
+pub radroots_event::listing::operational::OperationalListingParseError::InvalidUnit
+pub radroots_event::listing::operational::OperationalListingParseError::MissingTag(alloc::string::String)
+impl core::error::Error for radroots_event::listing::operational::OperationalListingParseError
+impl core::fmt::Display for radroots_event::listing::operational::OperationalListingParseError
+pub fn radroots_event::listing::operational::OperationalListingParseError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::listing::operational::OperationalListingStatus
+pub radroots_event::listing::operational::OperationalListingStatus::Active
+pub radroots_event::listing::operational::OperationalListingStatus::Other
+pub radroots_event::listing::operational::OperationalListingStatus::Other::value: alloc::string::String
+pub radroots_event::listing::operational::OperationalListingStatus::Sold
+pub struct radroots_event::listing::operational::OperationalListing
+pub radroots_event::listing::operational::OperationalListing::availability: core::option::Option<radroots_event::listing::operational::OperationalListingAvailability>
+pub radroots_event::listing::operational::OperationalListing::bins: alloc::vec::Vec<radroots_event::listing::operational::OperationalListingBin>
+pub radroots_event::listing::operational::OperationalListing::d_tag: radroots_event::id::DTag
+pub radroots_event::listing::operational::OperationalListing::delivery_method: core::option::Option<radroots_event::listing::operational::OperationalListingDeliveryMethod>
+pub radroots_event::listing::operational::OperationalListing::discounts: core::option::Option<alloc::vec::Vec<radroots_core::discount::Discount>>
+pub radroots_event::listing::operational::OperationalListing::farm: radroots_event::farm::FarmRef
+pub radroots_event::listing::operational::OperationalListing::images: core::option::Option<alloc::vec::Vec<radroots_event::listing::operational::OperationalListingImage>>
+pub radroots_event::listing::operational::OperationalListing::inventory_available: core::option::Option<radroots_core::decimal::Decimal>
+pub radroots_event::listing::operational::OperationalListing::location: core::option::Option<radroots_event::listing::operational::OperationalListingPublicLocation>
+pub radroots_event::listing::operational::OperationalListing::plot: core::option::Option<radroots_event::farm::plot::PlotRef>
+pub radroots_event::listing::operational::OperationalListing::primary_bin_id: radroots_event::id::InventoryBinId
+pub radroots_event::listing::operational::OperationalListing::product: radroots_event::listing::operational::OperationalListingProduct
+pub radroots_event::listing::operational::OperationalListing::published_at: core::option::Option<u64>
+pub radroots_event::listing::operational::OperationalListing::resource_area: core::option::Option<radroots_event::farm::resource_area::ResourceAreaRef>
+pub struct radroots_event::listing::operational::OperationalListingBin
+pub radroots_event::listing::operational::OperationalListingBin::bin_id: radroots_event::id::InventoryBinId
+pub radroots_event::listing::operational::OperationalListingBin::display_amount: core::option::Option<radroots_core::decimal::Decimal>
+pub radroots_event::listing::operational::OperationalListingBin::display_label: core::option::Option<alloc::string::String>
+pub radroots_event::listing::operational::OperationalListingBin::display_price: core::option::Option<radroots_core::money::Money>
+pub radroots_event::listing::operational::OperationalListingBin::display_price_unit: core::option::Option<radroots_core::unit::Unit>
+pub radroots_event::listing::operational::OperationalListingBin::display_unit: core::option::Option<radroots_core::unit::Unit>
+pub radroots_event::listing::operational::OperationalListingBin::price_per_canonical_unit: radroots_core::quantity_price::QuantityPrice
+pub radroots_event::listing::operational::OperationalListingBin::quantity: radroots_core::quantity::Quantity
+pub struct radroots_event::listing::operational::OperationalListingImage
+pub radroots_event::listing::operational::OperationalListingImage::size: core::option::Option<radroots_event::listing::operational::OperationalListingImageSize>
+pub radroots_event::listing::operational::OperationalListingImage::url: alloc::string::String
+pub struct radroots_event::listing::operational::OperationalListingImageSize
+pub radroots_event::listing::operational::OperationalListingImageSize::h: u32
+pub radroots_event::listing::operational::OperationalListingImageSize::w: u32
+pub struct radroots_event::listing::operational::OperationalListingProduct
+pub radroots_event::listing::operational::OperationalListingProduct::category: alloc::string::String
+pub radroots_event::listing::operational::OperationalListingProduct::key: alloc::string::String
+pub radroots_event::listing::operational::OperationalListingProduct::location: core::option::Option<alloc::string::String>
+pub radroots_event::listing::operational::OperationalListingProduct::lot: core::option::Option<alloc::string::String>
+pub radroots_event::listing::operational::OperationalListingProduct::process: core::option::Option<alloc::string::String>
+pub radroots_event::listing::operational::OperationalListingProduct::profile: core::option::Option<alloc::string::String>
+pub radroots_event::listing::operational::OperationalListingProduct::summary: core::option::Option<alloc::string::String>
+pub radroots_event::listing::operational::OperationalListingProduct::title: alloc::string::String
+pub radroots_event::listing::operational::OperationalListingProduct::year: core::option::Option<alloc::string::String>
+pub struct radroots_event::listing::operational::OperationalListingProductTagKeys
+pub struct radroots_event::listing::operational::OperationalListingPublicLocation
+pub radroots_event::listing::operational::OperationalListingPublicLocation::city: core::option::Option<alloc::string::String>
+pub radroots_event::listing::operational::OperationalListingPublicLocation::country: core::option::Option<alloc::string::String>
+pub radroots_event::listing::operational::OperationalListingPublicLocation::geohash: alloc::string::String
+pub radroots_event::listing::operational::OperationalListingPublicLocation::primary: alloc::string::String
+pub radroots_event::listing::operational::OperationalListingPublicLocation::region: core::option::Option<alloc::string::String>
+pub const radroots_event::listing::operational::RADROOTS_OPERATIONAL_LISTING_PRODUCT_TAG_KEYS: [&str; 9]
+pub mod radroots_event::media
+pub mod radroots_event::media::file_metadata
+pub struct radroots_event::media::file_metadata::FileMetadata
+pub radroots_event::media::file_metadata::FileMetadata::alt: core::option::Option<alloc::string::String>
+pub radroots_event::media::file_metadata::FileMetadata::blurhash: core::option::Option<alloc::string::String>
+pub radroots_event::media::file_metadata::FileMetadata::content: core::option::Option<alloc::string::String>
+pub radroots_event::media::file_metadata::FileMetadata::content_hashes: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub radroots_event::media::file_metadata::FileMetadata::dimensions: core::option::Option<radroots_event::social::SocialMediaDimensions>
+pub radroots_event::media::file_metadata::FileMetadata::fallback: core::option::Option<alloc::string::String>
+pub radroots_event::media::file_metadata::FileMetadata::magnet: core::option::Option<alloc::string::String>
+pub radroots_event::media::file_metadata::FileMetadata::mime_type: alloc::string::String
+pub radroots_event::media::file_metadata::FileMetadata::original_sha256: core::option::Option<alloc::string::String>
+pub radroots_event::media::file_metadata::FileMetadata::services: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub radroots_event::media::file_metadata::FileMetadata::sha256: alloc::string::String
+pub radroots_event::media::file_metadata::FileMetadata::size: core::option::Option<u64>
+pub radroots_event::media::file_metadata::FileMetadata::summary: core::option::Option<alloc::string::String>
+pub radroots_event::media::file_metadata::FileMetadata::thumbnails: core::option::Option<alloc::vec::Vec<radroots_event::social::SocialMediaThumbnail>>
+pub radroots_event::media::file_metadata::FileMetadata::url: alloc::string::String
+#[non_exhaustive] pub enum radroots_event::media::AuthoredImageError
+pub radroots_event::media::AuthoredImageError::MediaTypeNotImage
+impl radroots_event::media::AuthoredImageError
+pub const fn radroots_event::media::AuthoredImageError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::media::AuthoredImageError
+impl core::fmt::Display for radroots_event::media::AuthoredImageError
+pub fn radroots_event::media::AuthoredImageError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::media::AuthoredImage(_)
+impl radroots_event::media::AuthoredImage
+pub fn radroots_event::media::AuthoredImage::descriptor(&self) -> &radroots_blossom::descriptor::ByteVerifiedDescriptor
+pub fn radroots_event::media::AuthoredImage::try_from_verified_descriptor(radroots_blossom::descriptor::ByteVerifiedDescriptor) -> core::result::Result<Self, radroots_event::media::AuthoredImageError>
+impl core::convert::TryFrom<radroots_blossom::descriptor::ByteVerifiedDescriptor> for radroots_event::media::AuthoredImage
+pub type radroots_event::media::AuthoredImage::Error = radroots_event::media::AuthoredImageError
+pub fn radroots_event::media::AuthoredImage::try_from(radroots_blossom::descriptor::ByteVerifiedDescriptor) -> core::result::Result<Self, Self::Error>
+pub mod radroots_event::post
+pub mod radroots_event::post::article
+pub struct radroots_event::post::article::Article
+pub radroots_event::post::article::Article::content: alloc::string::String
+pub radroots_event::post::article::Article::d_tag: alloc::string::String
+pub radroots_event::post::article::Article::farm: core::option::Option<radroots_event::social::SocialFarmAnchor>
+pub radroots_event::post::article::Article::image: core::option::Option<alloc::string::String>
+pub radroots_event::post::article::Article::location: core::option::Option<radroots_event::social::SocialLocation>
+pub radroots_event::post::article::Article::published_at: core::option::Option<u64>
+pub radroots_event::post::article::Article::summary: core::option::Option<alloc::string::String>
+pub radroots_event::post::article::Article::title: alloc::string::String
+pub radroots_event::post::article::Article::topics: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub mod radroots_event::post::comment
+#[non_exhaustive] pub enum radroots_event::post::comment::Nip22CommentError
+pub radroots_event::post::comment::Nip22CommentError::ContentMissing
+pub radroots_event::post::comment::Nip22CommentError::ContentTooLarge
+pub radroots_event::post::comment::Nip22CommentError::ContentTooLarge::actual: usize
+pub radroots_event::post::comment::Nip22CommentError::ContentTooLarge::max: usize
+pub radroots_event::post::comment::Nip22CommentError::EventWireTooLarge
+pub radroots_event::post::comment::Nip22CommentError::EventWireTooLarge::actual: usize
+pub radroots_event::post::comment::Nip22CommentError::EventWireTooLarge::max: usize
+pub radroots_event::post::comment::Nip22CommentError::ParentAuthorInvalid(radroots_event::id::ParseError)
+pub radroots_event::post::comment::Nip22CommentError::ParentEventIdInvalid(radroots_event::id::ParseError)
+pub radroots_event::post::comment::Nip22CommentError::ParentReferenceMismatch
+pub radroots_event::post::comment::Nip22CommentError::RelayInvalid(radroots_event::id::ParseError)
+pub radroots_event::post::comment::Nip22CommentError::RevisionEventIdInvalid(radroots_event::id::ParseError)
+pub radroots_event::post::comment::Nip22CommentError::RootAuthorInvalid(radroots_event::id::ParseError)
+pub radroots_event::post::comment::Nip22CommentError::RootCoordinateInvalid(radroots_event::id::ParseError)
+pub radroots_event::post::comment::Nip22CommentError::RootEventIdInvalid(radroots_event::id::ParseError)
+pub radroots_event::post::comment::Nip22CommentError::RootKindUnsupported
+pub radroots_event::post::comment::Nip22CommentError::RootKindUnsupported::actual: u32
+pub radroots_event::post::comment::Nip22CommentError::TagBytesExceeded
+pub radroots_event::post::comment::Nip22CommentError::TagBytesExceeded::actual: usize
+pub radroots_event::post::comment::Nip22CommentError::TagBytesExceeded::max: usize
+pub radroots_event::post::comment::Nip22CommentError::TagCountExceeded
+pub radroots_event::post::comment::Nip22CommentError::TagCountExceeded::actual: usize
+pub radroots_event::post::comment::Nip22CommentError::TagCountExceeded::max: usize
+pub radroots_event::post::comment::Nip22CommentError::TagElementCountExceeded
+pub radroots_event::post::comment::Nip22CommentError::TagElementCountExceeded::actual: usize
+pub radroots_event::post::comment::Nip22CommentError::TagElementCountExceeded::max: usize
+pub radroots_event::post::comment::Nip22CommentError::TagElementTooLarge
+pub radroots_event::post::comment::Nip22CommentError::TagElementTooLarge::actual: usize
+pub radroots_event::post::comment::Nip22CommentError::TagElementTooLarge::max: usize
+impl radroots_event::post::comment::Nip22CommentError
+pub const fn radroots_event::post::comment::Nip22CommentError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::post::comment::Nip22CommentError
+pub fn radroots_event::post::comment::Nip22CommentError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event::post::comment::Nip22CommentError
+pub fn radroots_event::post::comment::Nip22CommentError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::post::comment::Nip22CommentPosition
+pub radroots_event::post::comment::Nip22CommentPosition::Nested
+pub radroots_event::post::comment::Nip22CommentPosition::Nested::parent: radroots_event::post::comment::Nip22CommentParentReference
+pub radroots_event::post::comment::Nip22CommentPosition::TopLevelAddress
+pub radroots_event::post::comment::Nip22CommentPosition::TopLevelAddress::current_revision: radroots_event::id::EventId
+pub radroots_event::post::comment::Nip22CommentPosition::TopLevelEvent
+pub enum radroots_event::post::comment::Nip22CommentRoot
+pub radroots_event::post::comment::Nip22CommentRoot::Address(radroots_event::post::comment::Nip22AddressRootReference)
+pub radroots_event::post::comment::Nip22CommentRoot::Event(radroots_event::post::comment::Nip22EventRootReference)
+impl radroots_event::post::comment::Nip22CommentRoot
+pub const fn radroots_event::post::comment::Nip22CommentRoot::author(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_event::post::comment::Nip22CommentRoot::kind(&self) -> radroots_event::post::comment::Nip22CommentRootKind
+pub const fn radroots_event::post::comment::Nip22CommentRoot::relay(&self) -> core::option::Option<&radroots_event::tag::relay_hint::NostrRelayHint>
+impl core::convert::From<radroots_event::post::comment::Nip22AddressRootReference> for radroots_event::post::comment::Nip22CommentRoot
+pub fn radroots_event::post::comment::Nip22CommentRoot::from(radroots_event::post::comment::Nip22AddressRootReference) -> Self
+impl core::convert::From<radroots_event::post::comment::Nip22EventRootReference> for radroots_event::post::comment::Nip22CommentRoot
+pub fn radroots_event::post::comment::Nip22CommentRoot::from(radroots_event::post::comment::Nip22EventRootReference) -> Self
+pub enum radroots_event::post::comment::Nip22CommentRootKind
+pub radroots_event::post::comment::Nip22CommentRootKind::Article
+pub radroots_event::post::comment::Nip22CommentRootKind::CalendarDateEvent
+pub radroots_event::post::comment::Nip22CommentRootKind::CalendarTimeEvent
+pub radroots_event::post::comment::Nip22CommentRootKind::ClassifiedListing
+impl radroots_event::post::comment::Nip22CommentRootKind
+pub const fn radroots_event::post::comment::Nip22CommentRootKind::as_u32(self) -> u32
+pub const fn radroots_event::post::comment::Nip22CommentRootKind::parse(u32) -> core::result::Result<Self, radroots_event::post::comment::Nip22CommentError>
+impl core::convert::From<radroots_event::post::comment::Nip22CommentRootKind> for u32
+pub fn u32::from(radroots_event::post::comment::Nip22CommentRootKind) -> Self
+impl core::convert::TryFrom<u32> for radroots_event::post::comment::Nip22CommentRootKind
+pub type radroots_event::post::comment::Nip22CommentRootKind::Error = radroots_event::post::comment::Nip22CommentError
+pub fn radroots_event::post::comment::Nip22CommentRootKind::try_from(u32) -> core::result::Result<Self, Self::Error>
+pub struct radroots_event::post::comment::AuthoredNip22Comment
+impl radroots_event::post::comment::AuthoredNip22Comment
+pub fn radroots_event::post::comment::AuthoredNip22Comment::content(&self) -> &str
+pub fn radroots_event::post::comment::AuthoredNip22Comment::nested(impl core::convert::Into<alloc::string::String>, impl core::convert::Into<radroots_event::post::comment::Nip22CommentRoot>, radroots_event::post::comment::Nip22CommentParentReference) -> core::result::Result<Self, radroots_event::post::comment::Nip22CommentError>
+pub fn radroots_event::post::comment::AuthoredNip22Comment::parse_top_level_address(impl core::convert::Into<alloc::string::String>, radroots_event::post::comment::Nip22AddressRootReference, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::post::comment::Nip22CommentError>
+pub const fn radroots_event::post::comment::AuthoredNip22Comment::position(&self) -> &radroots_event::post::comment::Nip22CommentPosition
+pub const fn radroots_event::post::comment::AuthoredNip22Comment::root(&self) -> &radroots_event::post::comment::Nip22CommentRoot
+pub fn radroots_event::post::comment::AuthoredNip22Comment::top_level_address(impl core::convert::Into<alloc::string::String>, radroots_event::post::comment::Nip22AddressRootReference, radroots_event::id::EventId) -> core::result::Result<Self, radroots_event::post::comment::Nip22CommentError>
+pub fn radroots_event::post::comment::AuthoredNip22Comment::top_level_event(impl core::convert::Into<alloc::string::String>, radroots_event::post::comment::Nip22EventRootReference) -> core::result::Result<Self, radroots_event::post::comment::Nip22CommentError>
+pub struct radroots_event::post::comment::Nip22AddressRootReference
+impl radroots_event::post::comment::Nip22AddressRootReference
+pub const fn radroots_event::post::comment::Nip22AddressRootReference::author(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_event::post::comment::Nip22AddressRootReference::coordinate(&self) -> &radroots_event::id::AddressableCoordinate
+pub const fn radroots_event::post::comment::Nip22AddressRootReference::kind(&self) -> radroots_event::post::comment::Nip22CommentRootKind
+pub fn radroots_event::post::comment::Nip22AddressRootReference::new(radroots_event::id::AddressableCoordinate, core::option::Option<radroots_event::tag::relay_hint::NostrRelayHint>) -> core::result::Result<Self, radroots_event::post::comment::Nip22CommentError>
+pub fn radroots_event::post::comment::Nip22AddressRootReference::parse(impl core::convert::AsRef<str>, core::option::Option<&str>) -> core::result::Result<Self, radroots_event::post::comment::Nip22CommentError>
+pub const fn radroots_event::post::comment::Nip22AddressRootReference::relay(&self) -> core::option::Option<&radroots_event::tag::relay_hint::NostrRelayHint>
+pub fn radroots_event::post::comment::Nip22AddressRootReference::relay_or_empty(&self) -> &str
+impl core::convert::From<radroots_event::post::comment::Nip22AddressRootReference> for radroots_event::post::comment::Nip22CommentRoot
+pub fn radroots_event::post::comment::Nip22CommentRoot::from(radroots_event::post::comment::Nip22AddressRootReference) -> Self
+pub struct radroots_event::post::comment::Nip22CommentParentReference
+impl radroots_event::post::comment::Nip22CommentParentReference
+pub const fn radroots_event::post::comment::Nip22CommentParentReference::author(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_event::post::comment::Nip22CommentParentReference::event_id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event::post::comment::Nip22CommentParentReference::new(radroots_event::id::EventId, radroots_identity::key::PublicKey, core::option::Option<radroots_event::tag::relay_hint::NostrRelayHint>) -> core::result::Result<Self, radroots_event::post::comment::Nip22CommentError>
+pub fn radroots_event::post::comment::Nip22CommentParentReference::parse(impl core::convert::AsRef<str>, impl core::convert::AsRef<str>, core::option::Option<&str>) -> core::result::Result<Self, radroots_event::post::comment::Nip22CommentError>
+pub const fn radroots_event::post::comment::Nip22CommentParentReference::relay(&self) -> core::option::Option<&radroots_event::tag::relay_hint::NostrRelayHint>
+pub fn radroots_event::post::comment::Nip22CommentParentReference::relay_or_empty(&self) -> &str
+pub struct radroots_event::post::comment::Nip22EventRootReference
+impl radroots_event::post::comment::Nip22EventRootReference
+pub const fn radroots_event::post::comment::Nip22EventRootReference::author(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_event::post::comment::Nip22EventRootReference::event_id(&self) -> &radroots_event::id::EventId
+pub const fn radroots_event::post::comment::Nip22EventRootReference::kind(&self) -> radroots_event::post::comment::Nip22CommentRootKind
+pub fn radroots_event::post::comment::Nip22EventRootReference::new(radroots_event::id::EventId, radroots_identity::key::PublicKey, radroots_event::post::comment::Nip22CommentRootKind, core::option::Option<radroots_event::tag::relay_hint::NostrRelayHint>) -> core::result::Result<Self, radroots_event::post::comment::Nip22CommentError>
+pub fn radroots_event::post::comment::Nip22EventRootReference::parse(impl core::convert::AsRef<str>, impl core::convert::AsRef<str>, u32, core::option::Option<&str>) -> core::result::Result<Self, radroots_event::post::comment::Nip22CommentError>
+pub const fn radroots_event::post::comment::Nip22EventRootReference::relay(&self) -> core::option::Option<&radroots_event::tag::relay_hint::NostrRelayHint>
+pub fn radroots_event::post::comment::Nip22EventRootReference::relay_or_empty(&self) -> &str
+impl core::convert::From<radroots_event::post::comment::Nip22EventRootReference> for radroots_event::post::comment::Nip22CommentRoot
+pub fn radroots_event::post::comment::Nip22CommentRoot::from(radroots_event::post::comment::Nip22EventRootReference) -> Self
+pub const radroots_event::post::comment::RADROOTS_NIP22_COMMENT_CONTENT_MAX_BYTES: usize
+pub const radroots_event::post::comment::RADROOTS_NIP22_COMMENT_EVENT_WIRE_MAX_BYTES: usize
+pub const radroots_event::post::comment::RADROOTS_NIP22_COMMENT_TAG_ELEMENT_MAX_BYTES: usize
+pub const radroots_event::post::comment::RADROOTS_NIP22_COMMENT_TAG_MAX_COUNT: usize
+pub const radroots_event::post::comment::RADROOTS_NIP22_COMMENT_TAG_TOTAL_ELEMENT_MAX_COUNT: usize
+pub const radroots_event::post::comment::RADROOTS_NIP22_COMMENT_TAG_TOTAL_MAX_BYTES: usize
+pub mod radroots_event::post::deletion
+#[non_exhaustive] pub enum radroots_event::post::deletion::Nip09DeletionError
+pub radroots_event::post::deletion::Nip09DeletionError::ContentTooLarge
+pub radroots_event::post::deletion::Nip09DeletionError::ContentTooLarge::actual: usize
+pub radroots_event::post::deletion::Nip09DeletionError::ContentTooLarge::max: usize
+pub radroots_event::post::deletion::Nip09DeletionError::CoordinateInvalid(radroots_event::id::Nip01CoordinateParseError)
+pub radroots_event::post::deletion::Nip09DeletionError::DuplicateAddressTarget
+pub radroots_event::post::deletion::Nip09DeletionError::DuplicateAddressTarget::coordinate: alloc::string::String
+pub radroots_event::post::deletion::Nip09DeletionError::DuplicateEventTarget
+pub radroots_event::post::deletion::Nip09DeletionError::DuplicateEventTarget::event_id: alloc::string::String
+pub radroots_event::post::deletion::Nip09DeletionError::EventIdInvalid(radroots_event::id::ParseError)
+pub radroots_event::post::deletion::Nip09DeletionError::EventWireTooLarge
+pub radroots_event::post::deletion::Nip09DeletionError::EventWireTooLarge::actual: usize
+pub radroots_event::post::deletion::Nip09DeletionError::EventWireTooLarge::max: usize
+pub radroots_event::post::deletion::Nip09DeletionError::TagBytesExceeded
+pub radroots_event::post::deletion::Nip09DeletionError::TagBytesExceeded::actual: usize
+pub radroots_event::post::deletion::Nip09DeletionError::TagBytesExceeded::max: usize
+pub radroots_event::post::deletion::Nip09DeletionError::TagCountExceeded
+pub radroots_event::post::deletion::Nip09DeletionError::TagCountExceeded::actual: usize
+pub radroots_event::post::deletion::Nip09DeletionError::TagCountExceeded::max: usize
+pub radroots_event::post::deletion::Nip09DeletionError::TagElementTooLarge
+pub radroots_event::post::deletion::Nip09DeletionError::TagElementTooLarge::actual: usize
+pub radroots_event::post::deletion::Nip09DeletionError::TagElementTooLarge::max: usize
+pub radroots_event::post::deletion::Nip09DeletionError::TargetKindOutOfRange
+pub radroots_event::post::deletion::Nip09DeletionError::TargetKindOutOfRange::actual: u32
+pub radroots_event::post::deletion::Nip09DeletionError::TargetKindOutOfRange::max: u32
+pub radroots_event::post::deletion::Nip09DeletionError::TargetMissing
+impl radroots_event::post::deletion::Nip09DeletionError
+pub const fn radroots_event::post::deletion::Nip09DeletionError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::post::deletion::Nip09DeletionError
+pub fn radroots_event::post::deletion::Nip09DeletionError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event::post::deletion::Nip09DeletionError
+pub fn radroots_event::post::deletion::Nip09DeletionError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::post::deletion::AuthoredNip09DeletionRequest
+impl radroots_event::post::deletion::AuthoredNip09DeletionRequest
+pub fn radroots_event::post::deletion::AuthoredNip09DeletionRequest::address_targets(&self) -> &[radroots_event::post::deletion::Nip09DeletionAddressTarget]
+pub fn radroots_event::post::deletion::AuthoredNip09DeletionRequest::content(&self) -> &str
+pub fn radroots_event::post::deletion::AuthoredNip09DeletionRequest::event_targets(&self) -> &[radroots_event::post::deletion::Nip09DeletionEventTarget]
+pub fn radroots_event::post::deletion::AuthoredNip09DeletionRequest::kind_hints(&self) -> &[u32]
+pub const fn radroots_event::post::deletion::AuthoredNip09DeletionRequest::maximum_signed_event_wire_bytes(&self) -> usize
+pub fn radroots_event::post::deletion::AuthoredNip09DeletionRequest::new(impl core::convert::Into<alloc::string::String>, alloc::vec::Vec<radroots_event::post::deletion::Nip09DeletionEventTarget>, alloc::vec::Vec<radroots_event::post::deletion::Nip09DeletionAddressTarget>) -> core::result::Result<Self, radroots_event::post::deletion::Nip09DeletionError>
+pub fn radroots_event::post::deletion::AuthoredNip09DeletionRequest::target_count(&self) -> usize
+pub struct radroots_event::post::deletion::Nip09DeletionAddressTarget
+impl radroots_event::post::deletion::Nip09DeletionAddressTarget
+pub const fn radroots_event::post::deletion::Nip09DeletionAddressTarget::coordinate(&self) -> &radroots_event::id::Nip01Coordinate
+pub const fn radroots_event::post::deletion::Nip09DeletionAddressTarget::kind_hint(&self) -> u32
+pub const fn radroots_event::post::deletion::Nip09DeletionAddressTarget::new(radroots_event::id::Nip01Coordinate) -> Self
+pub fn radroots_event::post::deletion::Nip09DeletionAddressTarget::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::post::deletion::Nip09DeletionError>
+pub struct radroots_event::post::deletion::Nip09DeletionEventTarget
+impl radroots_event::post::deletion::Nip09DeletionEventTarget
+pub const fn radroots_event::post::deletion::Nip09DeletionEventTarget::event_id(&self) -> &radroots_event::id::EventId
+pub const fn radroots_event::post::deletion::Nip09DeletionEventTarget::kind_hint(&self) -> u32
+pub fn radroots_event::post::deletion::Nip09DeletionEventTarget::new(radroots_event::id::EventId, u32) -> core::result::Result<Self, radroots_event::post::deletion::Nip09DeletionError>
+pub fn radroots_event::post::deletion::Nip09DeletionEventTarget::parse(impl core::convert::AsRef<str>, u32) -> core::result::Result<Self, radroots_event::post::deletion::Nip09DeletionError>
+pub const radroots_event::post::deletion::RADROOTS_NIP09_DELETION_CONTENT_MAX_BYTES: usize
+pub const radroots_event::post::deletion::RADROOTS_NIP09_DELETION_EVENT_WIRE_MAX_BYTES: usize
+pub const radroots_event::post::deletion::RADROOTS_NIP09_DELETION_TAG_ELEMENT_MAX_BYTES: usize
+pub const radroots_event::post::deletion::RADROOTS_NIP09_DELETION_TAG_MAX_COUNT: usize
+pub const radroots_event::post::deletion::RADROOTS_NIP09_DELETION_TAG_TOTAL_ELEMENT_MAX_COUNT: usize
+pub const radroots_event::post::deletion::RADROOTS_NIP09_DELETION_TAG_TOTAL_MAX_BYTES: usize
+pub const radroots_event::post::deletion::RADROOTS_NIP09_DELETION_TARGET_KIND_MAX: u32
+pub mod radroots_event::post::document
+pub struct radroots_event::post::document::Document
+pub radroots_event::post::document::Document::body_markdown: core::option::Option<alloc::string::String>
+pub radroots_event::post::document::Document::d_tag: alloc::string::String
+pub radroots_event::post::document::Document::doc_type: alloc::string::String
+pub radroots_event::post::document::Document::effective_at: core::option::Option<u32>
+pub radroots_event::post::document::Document::subject: radroots_event::post::document::DocumentSubject
+pub radroots_event::post::document::Document::summary: core::option::Option<alloc::string::String>
+pub radroots_event::post::document::Document::tags: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub radroots_event::post::document::Document::title: alloc::string::String
+pub radroots_event::post::document::Document::version: alloc::string::String
+pub struct radroots_event::post::document::DocumentSubject
+pub radroots_event::post::document::DocumentSubject::address: core::option::Option<alloc::string::String>
+pub radroots_event::post::document::DocumentSubject::pubkey: alloc::string::String
+pub mod radroots_event::post::reaction
+pub struct radroots_event::post::reaction::Reaction
+pub radroots_event::post::reaction::Reaction::content: alloc::string::String
+pub radroots_event::post::reaction::Reaction::target: radroots_event::social::SocialTarget
+pub mod radroots_event::post::reply
+#[non_exhaustive] pub enum radroots_event::post::reply::Nip10ReplyError
+pub radroots_event::post::reply::Nip10ReplyError::AuthorInvalid(radroots_event::id::ParseError)
+pub radroots_event::post::reply::Nip10ReplyError::ContentMissing
+pub radroots_event::post::reply::Nip10ReplyError::ContentTooLarge
+pub radroots_event::post::reply::Nip10ReplyError::ContentTooLarge::actual: usize
+pub radroots_event::post::reply::Nip10ReplyError::ContentTooLarge::max: usize
+pub radroots_event::post::reply::Nip10ReplyError::EventIdInvalid(radroots_event::id::ParseError)
+pub radroots_event::post::reply::Nip10ReplyError::EventWireTooLarge
+pub radroots_event::post::reply::Nip10ReplyError::EventWireTooLarge::actual: usize
+pub radroots_event::post::reply::Nip10ReplyError::EventWireTooLarge::max: usize
+pub radroots_event::post::reply::Nip10ReplyError::NestedParentMatchesRoot
+pub radroots_event::post::reply::Nip10ReplyError::RelayInvalid(radroots_event::id::ParseError)
+pub radroots_event::post::reply::Nip10ReplyError::TagBytesExceeded
+pub radroots_event::post::reply::Nip10ReplyError::TagBytesExceeded::actual: usize
+pub radroots_event::post::reply::Nip10ReplyError::TagBytesExceeded::max: usize
+pub radroots_event::post::reply::Nip10ReplyError::TagElementTooLarge
+pub radroots_event::post::reply::Nip10ReplyError::TagElementTooLarge::actual: usize
+pub radroots_event::post::reply::Nip10ReplyError::TagElementTooLarge::max: usize
+impl radroots_event::post::reply::Nip10ReplyError
+pub const fn radroots_event::post::reply::Nip10ReplyError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::post::reply::Nip10ReplyError
+pub fn radroots_event::post::reply::Nip10ReplyError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event::post::reply::Nip10ReplyError
+pub fn radroots_event::post::reply::Nip10ReplyError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::post::reply::AuthoredNip10Reply
+impl radroots_event::post::reply::AuthoredNip10Reply
+pub fn radroots_event::post::reply::AuthoredNip10Reply::content(&self) -> &str
+pub fn radroots_event::post::reply::AuthoredNip10Reply::direct(impl core::convert::Into<alloc::string::String>, radroots_event::post::reply::Nip10ReplyReference) -> core::result::Result<Self, radroots_event::post::reply::Nip10ReplyError>
+pub const fn radroots_event::post::reply::AuthoredNip10Reply::is_direct(&self) -> bool
+pub fn radroots_event::post::reply::AuthoredNip10Reply::nested(impl core::convert::Into<alloc::string::String>, radroots_event::post::reply::Nip10ReplyReference, radroots_event::post::reply::Nip10ReplyReference) -> core::result::Result<Self, radroots_event::post::reply::Nip10ReplyError>
+pub const fn radroots_event::post::reply::AuthoredNip10Reply::parent(&self) -> core::option::Option<&radroots_event::post::reply::Nip10ReplyReference>
+pub const fn radroots_event::post::reply::AuthoredNip10Reply::root(&self) -> &radroots_event::post::reply::Nip10ReplyReference
+pub struct radroots_event::post::reply::Nip10ReplyReference
+impl radroots_event::post::reply::Nip10ReplyReference
+pub const fn radroots_event::post::reply::Nip10ReplyReference::author(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_event::post::reply::Nip10ReplyReference::event_id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event::post::reply::Nip10ReplyReference::new(radroots_event::id::EventId, radroots_identity::key::PublicKey, core::option::Option<radroots_event::tag::relay_hint::NostrRelayHint>) -> core::result::Result<Self, radroots_event::post::reply::Nip10ReplyError>
+pub fn radroots_event::post::reply::Nip10ReplyReference::parse(impl core::convert::AsRef<str>, impl core::convert::AsRef<str>, core::option::Option<&str>) -> core::result::Result<Self, radroots_event::post::reply::Nip10ReplyError>
+pub const fn radroots_event::post::reply::Nip10ReplyReference::relay(&self) -> core::option::Option<&radroots_event::tag::relay_hint::NostrRelayHint>
+pub fn radroots_event::post::reply::Nip10ReplyReference::relay_or_empty(&self) -> &str
+pub mod radroots_event::post::report
+pub struct radroots_event::post::report::Report
+pub radroots_event::post::report::Report::content: core::option::Option<alloc::string::String>
+pub radroots_event::post::report::Report::event: core::option::Option<radroots_event::social::SocialTarget>
+pub radroots_event::post::report::Report::file: core::option::Option<radroots_event::social::ReportFileTarget>
+pub radroots_event::post::report::Report::report_type: radroots_event::social::ReportType
+pub radroots_event::post::report::Report::reported_pubkey: alloc::string::String
+pub mod radroots_event::post::repost
+pub struct radroots_event::post::repost::GenericRepost
+pub radroots_event::post::repost::GenericRepost::content: core::option::Option<alloc::string::String>
+pub radroots_event::post::repost::GenericRepost::target: radroots_event::social::SocialTarget
+pub radroots_event::post::repost::GenericRepost::target_kind: u32
+pub struct radroots_event::post::repost::Repost
+pub radroots_event::post::repost::Repost::content: core::option::Option<alloc::string::String>
+pub radroots_event::post::repost::Repost::target: radroots_event::social::SocialTarget
+#[non_exhaustive] pub enum radroots_event::post::AuthoredPostError
+pub radroots_event::post::AuthoredPostError::ContentMissing
+pub radroots_event::post::AuthoredPostError::ContentTooLarge
+pub radroots_event::post::AuthoredPostError::ContentTooLarge::actual: usize
+pub radroots_event::post::AuthoredPostError::ContentTooLarge::max: usize
+pub radroots_event::post::AuthoredPostError::DuplicateImageUrl
+pub radroots_event::post::AuthoredPostError::EventWireTooLarge
+pub radroots_event::post::AuthoredPostError::EventWireTooLarge::actual: usize
+pub radroots_event::post::AuthoredPostError::EventWireTooLarge::max: usize
+pub radroots_event::post::AuthoredPostError::ImageAltInvalid
+pub radroots_event::post::AuthoredPostError::ImageAltTooLarge
+pub radroots_event::post::AuthoredPostError::ImageAltTooLarge::actual: usize
+pub radroots_event::post::AuthoredPostError::ImageAltTooLarge::max: usize
+pub radroots_event::post::AuthoredPostError::ImageCountExceeded
+pub radroots_event::post::AuthoredPostError::ImageCountExceeded::actual: usize
+pub radroots_event::post::AuthoredPostError::ImageCountExceeded::max: usize
+pub radroots_event::post::AuthoredPostError::ImageDimensionsInvalid
+pub radroots_event::post::AuthoredPostError::ImageFallbackHashMismatch
+pub radroots_event::post::AuthoredPostError::ImageMediaTypeInvalid
+pub radroots_event::post::AuthoredPostError::ImageMissing
+pub radroots_event::post::AuthoredPostError::ImageSizeInvalid
+pub radroots_event::post::AuthoredPostError::ImageUrlOccurrenceCount
+pub radroots_event::post::AuthoredPostError::ImageUrlOccurrenceCount::actual: usize
+pub radroots_event::post::AuthoredPostError::ImageUrlOccurrenceCount::expected: usize
+pub radroots_event::post::AuthoredPostError::ImageUrlOverlap
+pub radroots_event::post::AuthoredPostError::TagBytesExceeded
+pub radroots_event::post::AuthoredPostError::TagBytesExceeded::actual: usize
+pub radroots_event::post::AuthoredPostError::TagBytesExceeded::max: usize
+pub radroots_event::post::AuthoredPostError::TagElementTooLarge
+pub radroots_event::post::AuthoredPostError::TagElementTooLarge::actual: usize
+pub radroots_event::post::AuthoredPostError::TagElementTooLarge::max: usize
+impl radroots_event::post::AuthoredPostError
+pub const fn radroots_event::post::AuthoredPostError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::post::AuthoredPostError
+impl core::fmt::Display for radroots_event::post::AuthoredPostError
+pub fn radroots_event::post::AuthoredPostError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::post::AuthoredAsk
+impl radroots_event::post::AuthoredAsk
+pub fn radroots_event::post::AuthoredAsk::content(&self) -> &str
+pub fn radroots_event::post::AuthoredAsk::images(&self) -> &[radroots_event::post::AuthoredPostImage]
+pub fn radroots_event::post::AuthoredAsk::new(impl core::convert::Into<alloc::string::String>, alloc::vec::Vec<radroots_event::post::AuthoredPostImage>) -> core::result::Result<Self, radroots_event::post::AuthoredPostError>
+pub struct radroots_event::post::AuthoredPhotoUpdate
+impl radroots_event::post::AuthoredPhotoUpdate
+pub fn radroots_event::post::AuthoredPhotoUpdate::content(&self) -> &str
+pub fn radroots_event::post::AuthoredPhotoUpdate::images(&self) -> &[radroots_event::post::AuthoredPostImage]
+pub fn radroots_event::post::AuthoredPhotoUpdate::new(impl core::convert::Into<alloc::string::String>, alloc::vec::Vec<radroots_event::post::AuthoredPostImage>) -> core::result::Result<Self, radroots_event::post::AuthoredPostError>
+pub struct radroots_event::post::AuthoredPostImage
+impl radroots_event::post::AuthoredPostImage
+pub fn radroots_event::post::AuthoredPostImage::alt(&self) -> &str
+pub const fn radroots_event::post::AuthoredPostImage::dimensions(&self) -> radroots_event::post::PostImageDimensions
+pub fn radroots_event::post::AuthoredPostImage::fallbacks(&self) -> &[radroots_blossom::url::ApprovedBlobUrl]
+pub fn radroots_event::post::AuthoredPostImage::image(&self) -> &radroots_event::media::AuthoredImage
+pub fn radroots_event::post::AuthoredPostImage::imeta_tag(&self) -> &[alloc::string::String]
+pub fn radroots_event::post::AuthoredPostImage::new(radroots_event::media::AuthoredImage, radroots_event::post::PostImageDimensions, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::post::AuthoredPostError>
+pub fn radroots_event::post::AuthoredPostImage::try_with_fallback(self, radroots_blossom::url::ApprovedBlobUrl) -> core::result::Result<Self, radroots_event::post::AuthoredPostError>
+pub fn radroots_event::post::AuthoredPostImage::url(&self) -> &str
+pub struct radroots_event::post::AuthoredUpdate
+impl radroots_event::post::AuthoredUpdate
+pub fn radroots_event::post::AuthoredUpdate::content(&self) -> &str
+pub fn radroots_event::post::AuthoredUpdate::new(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::post::AuthoredPostError>
+pub struct radroots_event::post::PostImageDimensions
+impl radroots_event::post::PostImageDimensions
+pub const fn radroots_event::post::PostImageDimensions::height(self) -> u32
+pub const fn radroots_event::post::PostImageDimensions::new(u32, u32) -> core::result::Result<Self, radroots_event::post::AuthoredPostError>
+pub const fn radroots_event::post::PostImageDimensions::width(self) -> u32
+pub const radroots_event::post::RADROOTS_ASK_MARKER_TAG_KEY: &str
+pub const radroots_event::post::RADROOTS_ASK_MARKER_TAG_VALUE: &str
+pub const radroots_event::post::RADROOTS_POST_ALT_MAX_BYTES: usize
+pub const radroots_event::post::RADROOTS_POST_CONTENT_MAX_BYTES: usize
+pub const radroots_event::post::RADROOTS_POST_EVENT_WIRE_MAX_BYTES: usize
+pub const radroots_event::post::RADROOTS_POST_IMETA_MAX_COUNT: usize
+pub const radroots_event::post::RADROOTS_POST_TAG_ELEMENT_MAX_BYTES: usize
+pub const radroots_event::post::RADROOTS_POST_TAG_TOTAL_MAX_BYTES: usize
+pub fn radroots_event::post::post_image_media_type_is_valid(&str) -> bool
+pub fn radroots_event::post::post_media_http_url_is_valid(&str) -> bool
+pub mod radroots_event::profile
+pub mod radroots_event::profile::account
+pub struct radroots_event::profile::account::AccountClaim
+pub radroots_event::profile::account::AccountClaim::nip05: core::option::Option<alloc::string::String>
+pub radroots_event::profile::account::AccountClaim::pubkey: alloc::string::String
+pub radroots_event::profile::account::AccountClaim::username: alloc::string::String
+pub const radroots_event::profile::account::KIND_ACCOUNT_CLAIM: u32
+#[non_exhaustive] pub enum radroots_event::profile::AuthoredProfileError
+pub radroots_event::profile::AuthoredProfileError::InvalidName
+impl radroots_event::profile::AuthoredProfileError
+pub const fn radroots_event::profile::AuthoredProfileError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::profile::AuthoredProfileError
+impl core::fmt::Display for radroots_event::profile::AuthoredProfileError
+pub fn radroots_event::profile::AuthoredProfileError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub enum radroots_event::profile::Nip05IdentifierError
+pub radroots_event::profile::Nip05IdentifierError::InvalidDomain
+pub radroots_event::profile::Nip05IdentifierError::InvalidLocalPart
+pub radroots_event::profile::Nip05IdentifierError::MissingSeparator
+pub radroots_event::profile::Nip05IdentifierError::MultipleSeparators
+impl radroots_event::profile::Nip05IdentifierError
+pub const fn radroots_event::profile::Nip05IdentifierError::code(&self) -> &'static str
+impl core::error::Error for radroots_event::profile::Nip05IdentifierError
+impl core::fmt::Display for radroots_event::profile::Nip05IdentifierError
+pub fn radroots_event::profile::Nip05IdentifierError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::profile::ProfileType
+pub radroots_event::profile::ProfileType::Any
+pub radroots_event::profile::ProfileType::Coop
+pub radroots_event::profile::ProfileType::Farm
+pub radroots_event::profile::ProfileType::Individual
+pub radroots_event::profile::ProfileType::Radrootsd
+pub struct radroots_event::profile::AuthoredProfile
+impl radroots_event::profile::AuthoredProfile
+pub fn radroots_event::profile::AuthoredProfile::about(&self) -> core::option::Option<&str>
+pub fn radroots_event::profile::AuthoredProfile::banner(&self) -> core::option::Option<&radroots_event::media::AuthoredImage>
+pub const fn radroots_event::profile::AuthoredProfile::bot(&self) -> core::option::Option<bool>
+pub fn radroots_event::profile::AuthoredProfile::display_name(&self) -> core::option::Option<&str>
+pub fn radroots_event::profile::AuthoredProfile::name(&self) -> &str
+pub fn radroots_event::profile::AuthoredProfile::new(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::profile::AuthoredProfileError>
+pub fn radroots_event::profile::AuthoredProfile::nip05(&self) -> core::option::Option<&radroots_event::profile::Nip05Identifier>
+pub fn radroots_event::profile::AuthoredProfile::picture(&self) -> core::option::Option<&radroots_event::media::AuthoredImage>
+pub fn radroots_event::profile::AuthoredProfile::with_about(self, impl core::convert::Into<alloc::string::String>) -> Self
+pub fn radroots_event::profile::AuthoredProfile::with_banner(self, radroots_event::media::AuthoredImage) -> Self
+pub const fn radroots_event::profile::AuthoredProfile::with_bot(self, bool) -> Self
+pub fn radroots_event::profile::AuthoredProfile::with_display_name(self, impl core::convert::Into<alloc::string::String>) -> Self
+pub fn radroots_event::profile::AuthoredProfile::with_nip05(self, radroots_event::profile::Nip05Identifier) -> Self
+pub fn radroots_event::profile::AuthoredProfile::with_picture(self, radroots_event::media::AuthoredImage) -> Self
+pub struct radroots_event::profile::Nip05Identifier(_)
+impl radroots_event::profile::Nip05Identifier
+pub fn radroots_event::profile::Nip05Identifier::as_str(&self) -> &str
+pub fn radroots_event::profile::Nip05Identifier::domain(&self) -> &str
+pub fn radroots_event::profile::Nip05Identifier::local_part(&self) -> &str
+pub fn radroots_event::profile::Nip05Identifier::parse(&str) -> core::result::Result<Self, radroots_event::profile::Nip05IdentifierError>
+impl core::fmt::Display for radroots_event::profile::Nip05Identifier
+pub fn radroots_event::profile::Nip05Identifier::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::profile::Nip05Identifier
+pub type radroots_event::profile::Nip05Identifier::Err = radroots_event::profile::Nip05IdentifierError
+pub fn radroots_event::profile::Nip05Identifier::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub const radroots_event::profile::RADROOTS_PROFILE_METADATA_MAX_CONTENT_BYTES: usize
+pub const radroots_event::profile::RADROOTS_PROFILE_TYPE_TAG_ANY: &str
+pub const radroots_event::profile::RADROOTS_PROFILE_TYPE_TAG_COOP: &str
+pub const radroots_event::profile::RADROOTS_PROFILE_TYPE_TAG_FARM: &str
+pub const radroots_event::profile::RADROOTS_PROFILE_TYPE_TAG_INDIVIDUAL: &str
+pub const radroots_event::profile::RADROOTS_PROFILE_TYPE_TAG_KEY: &str
+pub const radroots_event::profile::RADROOTS_PROFILE_TYPE_TAG_RADROOTSD: &str
+pub fn radroots_event::profile::radroots_profile_type_from_tag_value(&str) -> core::option::Option<radroots_event::profile::ProfileType>
+pub fn radroots_event::profile::radroots_profile_type_tag_value(radroots_event::profile::ProfileType) -> &'static str
+pub mod radroots_event::social
+pub mod radroots_event::social::app_data
+pub struct radroots_event::social::app_data::AppData
+pub radroots_event::social::app_data::AppData::content: alloc::string::String
+pub radroots_event::social::app_data::AppData::d_tag: alloc::string::String
+pub const radroots_event::social::app_data::KIND_APP_DATA: u32
+pub mod radroots_event::social::follow
+pub struct radroots_event::social::follow::Follow
+pub radroots_event::social::follow::Follow::list: alloc::vec::Vec<radroots_event::social::follow::FollowProfile>
+pub struct radroots_event::social::follow::FollowProfile
+pub radroots_event::social::follow::FollowProfile::contact_name: core::option::Option<alloc::string::String>
+pub radroots_event::social::follow::FollowProfile::public_key: alloc::string::String
+pub radroots_event::social::follow::FollowProfile::published_at: u64
+pub radroots_event::social::follow::FollowProfile::relay_url: core::option::Option<alloc::string::String>
+pub mod radroots_event::social::geochat
+pub struct radroots_event::social::geochat::GeoChat
+pub radroots_event::social::geochat::GeoChat::content: alloc::string::String
+pub radroots_event::social::geochat::GeoChat::geohash: alloc::string::String
+pub radroots_event::social::geochat::GeoChat::nickname: core::option::Option<alloc::string::String>
+pub radroots_event::social::geochat::GeoChat::teleported: bool
+pub mod radroots_event::social::gift_wrap
+pub struct radroots_event::social::gift_wrap::GiftWrap
+pub radroots_event::social::gift_wrap::GiftWrap::content: alloc::string::String
+pub radroots_event::social::gift_wrap::GiftWrap::expiration: core::option::Option<u32>
+pub radroots_event::social::gift_wrap::GiftWrap::recipient: radroots_event::social::gift_wrap::GiftWrapRecipient
+pub struct radroots_event::social::gift_wrap::GiftWrapRecipient
+pub radroots_event::social::gift_wrap::GiftWrapRecipient::public_key: alloc::string::String
+pub radroots_event::social::gift_wrap::GiftWrapRecipient::relay_url: core::option::Option<alloc::string::String>
+pub mod radroots_event::social::group
+pub struct radroots_event::social::group::GroupAdmins
+pub radroots_event::social::group::GroupAdmins::admins: alloc::vec::Vec<radroots_event::social::group::GroupUserRef>
+pub radroots_event::social::group::GroupAdmins::d_tag: alloc::string::String
+pub radroots_event::social::group::GroupAdmins::description: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::group::GroupCreateGroup
+pub radroots_event::social::group::GroupCreateGroup::group_id: alloc::string::String
+pub radroots_event::social::group::GroupCreateGroup::message: core::option::Option<alloc::string::String>
+pub radroots_event::social::group::GroupCreateGroup::metadata: radroots_event::social::group::GroupEditableMetadata
+pub struct radroots_event::social::group::GroupCreateInvite
+pub radroots_event::social::group::GroupCreateInvite::code: alloc::string::String
+pub radroots_event::social::group::GroupCreateInvite::group_id: alloc::string::String
+pub radroots_event::social::group::GroupCreateInvite::message: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::group::GroupDeleteEvent
+pub radroots_event::social::group::GroupDeleteEvent::event_id: alloc::string::String
+pub radroots_event::social::group::GroupDeleteEvent::group_id: alloc::string::String
+pub radroots_event::social::group::GroupDeleteEvent::message: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::group::GroupDeleteGroup
+pub radroots_event::social::group::GroupDeleteGroup::group_id: alloc::string::String
+pub radroots_event::social::group::GroupDeleteGroup::message: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::group::GroupEditMetadata
+pub radroots_event::social::group::GroupEditMetadata::group_id: alloc::string::String
+pub radroots_event::social::group::GroupEditMetadata::message: core::option::Option<alloc::string::String>
+pub radroots_event::social::group::GroupEditMetadata::metadata: radroots_event::social::group::GroupEditableMetadata
+pub struct radroots_event::social::group::GroupEditableMetadata
+pub radroots_event::social::group::GroupEditableMetadata::about: core::option::Option<alloc::string::String>
+pub radroots_event::social::group::GroupEditableMetadata::is_closed: bool
+pub radroots_event::social::group::GroupEditableMetadata::is_hidden: bool
+pub radroots_event::social::group::GroupEditableMetadata::is_private: bool
+pub radroots_event::social::group::GroupEditableMetadata::is_restricted: bool
+pub radroots_event::social::group::GroupEditableMetadata::name: core::option::Option<alloc::string::String>
+pub radroots_event::social::group::GroupEditableMetadata::picture: core::option::Option<alloc::string::String>
+pub radroots_event::social::group::GroupEditableMetadata::supported_kinds: core::option::Option<alloc::vec::Vec<u32>>
+pub struct radroots_event::social::group::GroupJoinRequest
+pub radroots_event::social::group::GroupJoinRequest::code: core::option::Option<alloc::string::String>
+pub radroots_event::social::group::GroupJoinRequest::group_id: alloc::string::String
+pub radroots_event::social::group::GroupJoinRequest::message: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::group::GroupLeaveRequest
+pub radroots_event::social::group::GroupLeaveRequest::group_id: alloc::string::String
+pub radroots_event::social::group::GroupLeaveRequest::message: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::group::GroupMembers
+pub radroots_event::social::group::GroupMembers::d_tag: alloc::string::String
+pub radroots_event::social::group::GroupMembers::description: core::option::Option<alloc::string::String>
+pub radroots_event::social::group::GroupMembers::members: alloc::vec::Vec<radroots_event::social::group::GroupUserRef>
+pub struct radroots_event::social::group::GroupMetadata
+pub radroots_event::social::group::GroupMetadata::d_tag: alloc::string::String
+pub radroots_event::social::group::GroupMetadata::metadata: radroots_event::social::group::GroupEditableMetadata
+pub struct radroots_event::social::group::GroupPutUser
+pub radroots_event::social::group::GroupPutUser::group_id: alloc::string::String
+pub radroots_event::social::group::GroupPutUser::message: core::option::Option<alloc::string::String>
+pub radroots_event::social::group::GroupPutUser::pubkey: alloc::string::String
+pub radroots_event::social::group::GroupPutUser::roles: alloc::vec::Vec<alloc::string::String>
+pub struct radroots_event::social::group::GroupRemoveUser
+pub radroots_event::social::group::GroupRemoveUser::group_id: alloc::string::String
+pub radroots_event::social::group::GroupRemoveUser::message: core::option::Option<alloc::string::String>
+pub radroots_event::social::group::GroupRemoveUser::pubkey: alloc::string::String
+pub struct radroots_event::social::group::GroupRole
+pub radroots_event::social::group::GroupRole::description: core::option::Option<alloc::string::String>
+pub radroots_event::social::group::GroupRole::name: alloc::string::String
+pub radroots_event::social::group::GroupRole::permissions: alloc::vec::Vec<alloc::string::String>
+pub struct radroots_event::social::group::GroupRoles
+pub radroots_event::social::group::GroupRoles::d_tag: alloc::string::String
+pub radroots_event::social::group::GroupRoles::description: core::option::Option<alloc::string::String>
+pub radroots_event::social::group::GroupRoles::roles: alloc::vec::Vec<radroots_event::social::group::GroupRole>
+pub struct radroots_event::social::group::GroupUserRef
+pub radroots_event::social::group::GroupUserRef::pubkey: alloc::string::String
+pub radroots_event::social::group::GroupUserRef::roles: alloc::vec::Vec<alloc::string::String>
+pub const radroots_event::social::group::KIND_GROUP_ADMINS: u32
+pub const radroots_event::social::group::KIND_GROUP_CREATE_GROUP: u32
+pub const radroots_event::social::group::KIND_GROUP_CREATE_INVITE: u32
+pub const radroots_event::social::group::KIND_GROUP_DELETE_EVENT: u32
+pub const radroots_event::social::group::KIND_GROUP_DELETE_GROUP: u32
+pub const radroots_event::social::group::KIND_GROUP_EDIT_METADATA: u32
+pub const radroots_event::social::group::KIND_GROUP_JOIN_REQUEST: u32
+pub const radroots_event::social::group::KIND_GROUP_LEAVE_REQUEST: u32
+pub const radroots_event::social::group::KIND_GROUP_MEMBERS: u32
+pub const radroots_event::social::group::KIND_GROUP_METADATA: u32
+pub const radroots_event::social::group::KIND_GROUP_PUT_USER: u32
+pub const radroots_event::social::group::KIND_GROUP_REMOVE_USER: u32
+pub const radroots_event::social::group::KIND_GROUP_ROLES: u32
+pub mod radroots_event::social::http_auth
+pub struct radroots_event::social::http_auth::HttpAuth
+pub radroots_event::social::http_auth::HttpAuth::method: alloc::string::String
+pub radroots_event::social::http_auth::HttpAuth::payload_sha256: core::option::Option<alloc::string::String>
+pub radroots_event::social::http_auth::HttpAuth::url: alloc::string::String
+pub const radroots_event::social::http_auth::KIND_HTTP_AUTH: u32
+pub mod radroots_event::social::job
+pub enum radroots_event::social::job::JobFeedbackStatus
+pub radroots_event::social::job::JobFeedbackStatus::Error
+pub radroots_event::social::job::JobFeedbackStatus::Partial
+pub radroots_event::social::job::JobFeedbackStatus::PaymentRequired
+pub radroots_event::social::job::JobFeedbackStatus::Processing
+pub radroots_event::social::job::JobFeedbackStatus::Success
+pub enum radroots_event::social::job::JobInputType
+pub radroots_event::social::job::JobInputType::Event
+pub radroots_event::social::job::JobInputType::Job
+pub radroots_event::social::job::JobInputType::Text
+pub radroots_event::social::job::JobInputType::Url
+pub struct radroots_event::social::job::JobPaymentRequest
+pub radroots_event::social::job::JobPaymentRequest::amount_sat: u32
+pub radroots_event::social::job::JobPaymentRequest::bolt11: core::option::Option<alloc::string::String>
+pub mod radroots_event::social::job_feedback
+pub struct radroots_event::social::job_feedback::JobFeedback
+pub radroots_event::social::job_feedback::JobFeedback::content: core::option::Option<alloc::string::String>
+pub radroots_event::social::job_feedback::JobFeedback::customer_pubkey: core::option::Option<alloc::string::String>
+pub radroots_event::social::job_feedback::JobFeedback::encrypted: bool
+pub radroots_event::social::job_feedback::JobFeedback::extra_info: core::option::Option<alloc::string::String>
+pub radroots_event::social::job_feedback::JobFeedback::kind: u16
+pub radroots_event::social::job_feedback::JobFeedback::payment: core::option::Option<radroots_event::social::job::JobPaymentRequest>
+pub radroots_event::social::job_feedback::JobFeedback::request_event: radroots_event::tag::EventPtr
+pub radroots_event::social::job_feedback::JobFeedback::status: radroots_event::social::job::JobFeedbackStatus
+pub mod radroots_event::social::job_request
+pub struct radroots_event::social::job_request::JobInput
+pub radroots_event::social::job_request::JobInput::data: alloc::string::String
+pub radroots_event::social::job_request::JobInput::input_type: radroots_event::social::job::JobInputType
+pub radroots_event::social::job_request::JobInput::marker: core::option::Option<alloc::string::String>
+pub radroots_event::social::job_request::JobInput::relay: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::job_request::JobParam
+pub radroots_event::social::job_request::JobParam::key: alloc::string::String
+pub radroots_event::social::job_request::JobParam::value: alloc::string::String
+pub struct radroots_event::social::job_request::JobRequest
+pub radroots_event::social::job_request::JobRequest::bid_sat: core::option::Option<u32>
+pub radroots_event::social::job_request::JobRequest::encrypted: bool
+pub radroots_event::social::job_request::JobRequest::inputs: alloc::vec::Vec<radroots_event::social::job_request::JobInput>
+pub radroots_event::social::job_request::JobRequest::kind: u16
+pub radroots_event::social::job_request::JobRequest::output: core::option::Option<alloc::string::String>
+pub radroots_event::social::job_request::JobRequest::params: alloc::vec::Vec<radroots_event::social::job_request::JobParam>
+pub radroots_event::social::job_request::JobRequest::providers: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::social::job_request::JobRequest::relays: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::social::job_request::JobRequest::topics: alloc::vec::Vec<alloc::string::String>
+pub mod radroots_event::social::job_result
+pub struct radroots_event::social::job_result::JobResult
+pub radroots_event::social::job_result::JobResult::content: core::option::Option<alloc::string::String>
+pub radroots_event::social::job_result::JobResult::customer_pubkey: core::option::Option<alloc::string::String>
+pub radroots_event::social::job_result::JobResult::encrypted: bool
+pub radroots_event::social::job_result::JobResult::inputs: alloc::vec::Vec<radroots_event::social::job_request::JobInput>
+pub radroots_event::social::job_result::JobResult::kind: u16
+pub radroots_event::social::job_result::JobResult::payment: core::option::Option<radroots_event::social::job::JobPaymentRequest>
+pub radroots_event::social::job_result::JobResult::request_event: radroots_event::tag::EventPtr
+pub radroots_event::social::job_result::JobResult::request_json: core::option::Option<alloc::string::String>
+pub mod radroots_event::social::list
+pub struct radroots_event::social::list::List
+pub radroots_event::social::list::List::content: alloc::string::String
+pub radroots_event::social::list::List::entries: alloc::vec::Vec<radroots_event::social::list::ListEntry>
+pub struct radroots_event::social::list::ListEntry
+pub radroots_event::social::list::ListEntry::tag: alloc::string::String
+pub radroots_event::social::list::ListEntry::values: alloc::vec::Vec<alloc::string::String>
+pub mod radroots_event::social::list_set
+pub struct radroots_event::social::list_set::ListSet
+pub radroots_event::social::list_set::ListSet::content: alloc::string::String
+pub radroots_event::social::list_set::ListSet::d_tag: alloc::string::String
+pub radroots_event::social::list_set::ListSet::description: core::option::Option<alloc::string::String>
+pub radroots_event::social::list_set::ListSet::entries: alloc::vec::Vec<radroots_event::social::list::ListEntry>
+pub radroots_event::social::list_set::ListSet::image: core::option::Option<alloc::string::String>
+pub radroots_event::social::list_set::ListSet::title: core::option::Option<alloc::string::String>
+pub mod radroots_event::social::message
+pub struct radroots_event::social::message::Message
+pub radroots_event::social::message::Message::content: alloc::string::String
+pub radroots_event::social::message::Message::recipients: alloc::vec::Vec<radroots_event::social::message::MessageRecipient>
+pub radroots_event::social::message::Message::reply_to: core::option::Option<radroots_event::tag::EventPtr>
+pub radroots_event::social::message::Message::subject: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::message::MessageRecipient
+pub radroots_event::social::message::MessageRecipient::public_key: alloc::string::String
+pub radroots_event::social::message::MessageRecipient::relay_url: core::option::Option<alloc::string::String>
+pub mod radroots_event::social::message_file
+pub struct radroots_event::social::message_file::MessageFile
+pub radroots_event::social::message_file::MessageFile::blurhash: core::option::Option<alloc::string::String>
+pub radroots_event::social::message_file::MessageFile::decryption_key: alloc::string::String
+pub radroots_event::social::message_file::MessageFile::decryption_nonce: alloc::string::String
+pub radroots_event::social::message_file::MessageFile::dimensions: core::option::Option<radroots_event::social::message_file::MessageFileDimensions>
+pub radroots_event::social::message_file::MessageFile::encrypted_hash: alloc::string::String
+pub radroots_event::social::message_file::MessageFile::encryption_algorithm: alloc::string::String
+pub radroots_event::social::message_file::MessageFile::fallbacks: alloc::vec::Vec<alloc::string::String>
+pub radroots_event::social::message_file::MessageFile::file_type: alloc::string::String
+pub radroots_event::social::message_file::MessageFile::file_url: alloc::string::String
+pub radroots_event::social::message_file::MessageFile::original_hash: core::option::Option<alloc::string::String>
+pub radroots_event::social::message_file::MessageFile::recipients: alloc::vec::Vec<radroots_event::social::message::MessageRecipient>
+pub radroots_event::social::message_file::MessageFile::reply_to: core::option::Option<radroots_event::tag::EventPtr>
+pub radroots_event::social::message_file::MessageFile::size: core::option::Option<u64>
+pub radroots_event::social::message_file::MessageFile::subject: core::option::Option<alloc::string::String>
+pub radroots_event::social::message_file::MessageFile::thumb: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::message_file::MessageFileDimensions
+pub radroots_event::social::message_file::MessageFileDimensions::h: u32
+pub radroots_event::social::message_file::MessageFileDimensions::w: u32
+pub mod radroots_event::social::relay_auth
+pub struct radroots_event::social::relay_auth::RelayAuth
+pub radroots_event::social::relay_auth::RelayAuth::challenge: alloc::string::String
+pub radroots_event::social::relay_auth::RelayAuth::relay: alloc::string::String
+pub const radroots_event::social::relay_auth::KIND_RELAY_AUTH: u32
+pub mod radroots_event::social::relay_document
+pub struct radroots_event::social::relay_document::RelayDocument
+pub radroots_event::social::relay_document::RelayDocument::contact: core::option::Option<alloc::string::String>
+pub radroots_event::social::relay_document::RelayDocument::description: core::option::Option<alloc::string::String>
+pub radroots_event::social::relay_document::RelayDocument::name: core::option::Option<alloc::string::String>
+pub radroots_event::social::relay_document::RelayDocument::pubkey: core::option::Option<alloc::string::String>
+pub radroots_event::social::relay_document::RelayDocument::software: core::option::Option<alloc::string::String>
+pub radroots_event::social::relay_document::RelayDocument::supported_nips: core::option::Option<alloc::vec::Vec<u16>>
+pub radroots_event::social::relay_document::RelayDocument::version: core::option::Option<alloc::string::String>
+pub mod radroots_event::social::seal
+pub struct radroots_event::social::seal::Seal
+pub radroots_event::social::seal::Seal::content: alloc::string::String
+pub enum radroots_event::social::ReportType
+pub radroots_event::social::ReportType::Illegal
+pub radroots_event::social::ReportType::Impersonation
+pub radroots_event::social::ReportType::Malware
+pub radroots_event::social::ReportType::Nudity
+pub radroots_event::social::ReportType::Other
+pub radroots_event::social::ReportType::Profanity
+pub radroots_event::social::ReportType::Spam
+pub enum radroots_event::social::SocialTarget
+pub radroots_event::social::SocialTarget::Address
+pub radroots_event::social::SocialTarget::Address::address: alloc::string::String
+pub radroots_event::social::SocialTarget::Address::author: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialTarget::Address::event_kind: core::option::Option<u32>
+pub radroots_event::social::SocialTarget::Address::relays: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub radroots_event::social::SocialTarget::Event
+pub radroots_event::social::SocialTarget::Event::author: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialTarget::Event::event_kind: core::option::Option<u32>
+pub radroots_event::social::SocialTarget::Event::id: alloc::string::String
+pub radroots_event::social::SocialTarget::Event::relays: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub radroots_event::social::SocialTarget::External
+pub radroots_event::social::SocialTarget::External::external_kind: alloc::string::String
+pub radroots_event::social::SocialTarget::External::hint: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialTarget::External::id: alloc::string::String
+pub struct radroots_event::social::ReportFileTarget
+pub radroots_event::social::ReportFileTarget::magnet: core::option::Option<alloc::string::String>
+pub radroots_event::social::ReportFileTarget::sha256: core::option::Option<alloc::string::String>
+pub radroots_event::social::ReportFileTarget::url: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::ReportTarget
+pub radroots_event::social::ReportTarget::event: core::option::Option<radroots_event::social::SocialTarget>
+pub radroots_event::social::ReportTarget::file: core::option::Option<radroots_event::social::ReportFileTarget>
+pub radroots_event::social::ReportTarget::reported_pubkey: alloc::string::String
+pub struct radroots_event::social::SocialFarmAnchor
+pub radroots_event::social::SocialFarmAnchor::farm: radroots_event::farm::FarmRef
+pub radroots_event::social::SocialFarmAnchor::relays: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub struct radroots_event::social::SocialLocation
+pub radroots_event::social::SocialLocation::geohash: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialLocation::name: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::SocialMediaDimensions
+pub radroots_event::social::SocialMediaDimensions::height: u32
+pub radroots_event::social::SocialMediaDimensions::width: u32
+pub struct radroots_event::social::SocialMediaMetadata
+pub radroots_event::social::SocialMediaMetadata::alt: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialMediaMetadata::blurhash: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialMediaMetadata::content_hashes: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub radroots_event::social::SocialMediaMetadata::dimensions: core::option::Option<radroots_event::social::SocialMediaDimensions>
+pub radroots_event::social::SocialMediaMetadata::fallback: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialMediaMetadata::image: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialMediaMetadata::imeta: core::option::Option<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>>
+pub radroots_event::social::SocialMediaMetadata::magnet: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialMediaMetadata::mime_type: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialMediaMetadata::original_sha256: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialMediaMetadata::services: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub radroots_event::social::SocialMediaMetadata::sha256: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialMediaMetadata::size: core::option::Option<u64>
+pub radroots_event::social::SocialMediaMetadata::summary: core::option::Option<alloc::string::String>
+pub radroots_event::social::SocialMediaMetadata::thumbnails: core::option::Option<alloc::vec::Vec<radroots_event::social::SocialMediaThumbnail>>
+pub radroots_event::social::SocialMediaMetadata::url: core::option::Option<alloc::string::String>
+pub struct radroots_event::social::SocialMediaThumbnail
+pub radroots_event::social::SocialMediaThumbnail::dimensions: core::option::Option<radroots_event::social::SocialMediaDimensions>
+pub radroots_event::social::SocialMediaThumbnail::url: alloc::string::String
+pub mod radroots_event::tag
+pub mod radroots_event::tag::name
+pub const radroots_event::tag::name::TAG_A: &str
+pub const radroots_event::tag::name::TAG_ALT: &str
+pub const radroots_event::tag::name::TAG_AMOUNT: &str
+pub const radroots_event::tag::name::TAG_A_ROOT: &str
+pub const radroots_event::tag::name::TAG_BLURHASH: &str
+pub const radroots_event::tag::name::TAG_CHALLENGE: &str
+pub const radroots_event::tag::name::TAG_CONTRACT: &str
+pub const radroots_event::tag::name::TAG_CURRENCY: &str
+pub const radroots_event::tag::name::TAG_D: &str
+pub const radroots_event::tag::name::TAG_DESCRIPTION: &str
+pub const radroots_event::tag::name::TAG_DIMENSIONS: &str
+pub const radroots_event::tag::name::TAG_D_DAY: &str
+pub const radroots_event::tag::name::TAG_E: &str
+pub const radroots_event::tag::name::TAG_END: &str
+pub const radroots_event::tag::name::TAG_END_TZID: &str
+pub const radroots_event::tag::name::TAG_E_PREV: &str
+pub const radroots_event::tag::name::TAG_E_ROOT: &str
+pub const radroots_event::tag::name::TAG_E_ROOT_NIP22: &str
+pub const radroots_event::tag::name::TAG_FALLBACK: &str
+pub const radroots_event::tag::name::TAG_FREE_BUSY: &str
+pub const radroots_event::tag::name::TAG_G: &str
+pub const radroots_event::tag::name::TAG_H: &str
+pub const radroots_event::tag::name::TAG_I: &str
+pub const radroots_event::tag::name::TAG_IMAGE: &str
+pub const radroots_event::tag::name::TAG_IMETA: &str
+pub const radroots_event::tag::name::TAG_I_ROOT: &str
+pub const radroots_event::tag::name::TAG_K: &str
+pub const radroots_event::tag::name::TAG_K_ROOT: &str
+pub const radroots_event::tag::name::TAG_LOCATION: &str
+pub const radroots_event::tag::name::TAG_MAGNET: &str
+pub const radroots_event::tag::name::TAG_METHOD: &str
+pub const radroots_event::tag::name::TAG_MIME: &str
+pub const radroots_event::tag::name::TAG_ORIGINAL_SHA256: &str
+pub const radroots_event::tag::name::TAG_P: &str
+pub const radroots_event::tag::name::TAG_PAYLOAD: &str
+pub const radroots_event::tag::name::TAG_PRICE: &str
+pub const radroots_event::tag::name::TAG_PUBLISHED_AT: &str
+pub const radroots_event::tag::name::TAG_P_ROOT: &str
+pub const radroots_event::tag::name::TAG_Q: &str
+pub const radroots_event::tag::name::TAG_R: &str
+pub const radroots_event::tag::name::TAG_RELAY: &str
+pub const radroots_event::tag::name::TAG_SERVER: &str
+pub const radroots_event::tag::name::TAG_SERVICE: &str
+pub const radroots_event::tag::name::TAG_SHA256: &str
+pub const radroots_event::tag::name::TAG_SIZE: &str
+pub const radroots_event::tag::name::TAG_START: &str
+pub const radroots_event::tag::name::TAG_START_TZID: &str
+pub const radroots_event::tag::name::TAG_STATUS: &str
+pub const radroots_event::tag::name::TAG_SUBJECT: &str
+pub const radroots_event::tag::name::TAG_SUMMARY: &str
+pub const radroots_event::tag::name::TAG_T: &str
+pub const radroots_event::tag::name::TAG_THUMB: &str
+pub const radroots_event::tag::name::TAG_THUMBNAIL: &str
+pub const radroots_event::tag::name::TAG_TITLE: &str
+pub const radroots_event::tag::name::TAG_U: &str
+pub const radroots_event::tag::name::TAG_URL: &str
+pub const radroots_event::tag::name::TAG_URL_AUTH: &str
+pub mod radroots_event::tag::relay_hint
+pub struct radroots_event::tag::relay_hint::NostrRelayHint(_)
+impl radroots_event::tag::relay_hint::NostrRelayHint
+pub fn radroots_event::tag::relay_hint::NostrRelayHint::as_str(&self) -> &str
+pub fn radroots_event::tag::relay_hint::NostrRelayHint::into_string(self) -> alloc::string::String
+pub fn radroots_event::tag::relay_hint::NostrRelayHint::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+impl core::convert::AsRef<str> for radroots_event::tag::relay_hint::NostrRelayHint
+pub fn radroots_event::tag::relay_hint::NostrRelayHint::as_ref(&self) -> &str
+impl core::convert::From<radroots_event::tag::relay_hint::NostrRelayHint> for alloc::string::String
+pub fn alloc::string::String::from(radroots_event::tag::relay_hint::NostrRelayHint) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::tag::relay_hint::NostrRelayHint
+pub type radroots_event::tag::relay_hint::NostrRelayHint::Error = radroots_event::id::ParseError
+pub fn radroots_event::tag::relay_hint::NostrRelayHint::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::tag::relay_hint::NostrRelayHint
+pub type radroots_event::tag::relay_hint::NostrRelayHint::Error = radroots_event::id::ParseError
+pub fn radroots_event::tag::relay_hint::NostrRelayHint::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::tag::relay_hint::NostrRelayHint
+pub fn radroots_event::tag::relay_hint::NostrRelayHint::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::tag::relay_hint::NostrRelayHint
+pub type radroots_event::tag::relay_hint::NostrRelayHint::Err = radroots_event::id::ParseError
+pub fn radroots_event::tag::relay_hint::NostrRelayHint::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub struct radroots_event::tag::EventPtr
+pub radroots_event::tag::EventPtr::id: alloc::string::String
+pub radroots_event::tag::EventPtr::relays: core::option::Option<alloc::string::String>
+pub struct radroots_event::tag::EventRef
+pub radroots_event::tag::EventRef::author: radroots_identity::key::PublicKey
+pub radroots_event::tag::EventRef::d_tag: core::option::Option<alloc::string::String>
+pub radroots_event::tag::EventRef::id: alloc::string::String
+pub radroots_event::tag::EventRef::kind: u32
+pub radroots_event::tag::EventRef::relays: core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub mod radroots_event::trade
+pub mod radroots_event::trade::order
+pub enum radroots_event::trade::order::CommercialDomain
+pub radroots_event::trade::order::CommercialDomain::Listing
+pub enum radroots_event::trade::order::OrderDecisionOutcome
+pub radroots_event::trade::order::OrderDecisionOutcome::Accepted
+pub radroots_event::trade::order::OrderDecisionOutcome::Accepted::inventory_commitments: alloc::vec::Vec<radroots_event::trade::order::OrderInventoryCommitment>
+pub radroots_event::trade::order::OrderDecisionOutcome::Declined
+pub radroots_event::trade::order::OrderDecisionOutcome::Declined::reason: alloc::string::String
+impl radroots_event::trade::order::OrderDecisionOutcome
+pub fn radroots_event::trade::order::OrderDecisionOutcome::validate(&self) -> core::result::Result<(), radroots_event::trade::order::OrderPayloadError>
+pub enum radroots_event::trade::order::OrderEconomicActor
+pub radroots_event::trade::order::OrderEconomicActor::Buyer
+pub radroots_event::trade::order::OrderEconomicActor::Seller
+pub enum radroots_event::trade::order::OrderEconomicEffect
+pub radroots_event::trade::order::OrderEconomicEffect::Decrease
+pub radroots_event::trade::order::OrderEconomicEffect::Increase
+pub enum radroots_event::trade::order::OrderEconomicLineKind
+pub radroots_event::trade::order::OrderEconomicLineKind::BasketAdjustment
+pub radroots_event::trade::order::OrderEconomicLineKind::ListingDiscount
+pub radroots_event::trade::order::OrderEconomicLineKind::RevisionAdjustment
+pub enum radroots_event::trade::order::OrderEnvelopeError
+pub radroots_event::trade::order::OrderEnvelopeError::InvalidVersion
+pub radroots_event::trade::order::OrderEnvelopeError::InvalidVersion::expected: u16
+pub radroots_event::trade::order::OrderEnvelopeError::InvalidVersion::got: u16
+pub radroots_event::trade::order::OrderEnvelopeError::MissingListingAddr
+pub radroots_event::trade::order::OrderEnvelopeError::MissingOrderId
+impl core::error::Error for radroots_event::trade::order::OrderEnvelopeError
+impl core::fmt::Display for radroots_event::trade::order::OrderEnvelopeError
+pub fn radroots_event::trade::order::OrderEnvelopeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::trade::order::OrderEventType
+pub radroots_event::trade::order::OrderEventType::OrderCancelled
+pub radroots_event::trade::order::OrderEventType::OrderDecision
+pub radroots_event::trade::order::OrderEventType::OrderRequested
+impl radroots_event::trade::order::OrderEventType
+pub const fn radroots_event::trade::order::OrderEventType::from_kind(u32) -> core::option::Option<Self>
+pub const fn radroots_event::trade::order::OrderEventType::kind(self) -> u32
+pub const fn radroots_event::trade::order::OrderEventType::name(self) -> &'static str
+pub const fn radroots_event::trade::order::OrderEventType::requires_listing_snapshot(self) -> bool
+pub const fn radroots_event::trade::order::OrderEventType::requires_order_chain(self) -> bool
+pub enum radroots_event::trade::order::OrderPayloadError
+pub radroots_event::trade::order::OrderPayloadError::EmptyField(&'static str)
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicCurrency
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicCurrency::field: &'static str
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicItemBinCount
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicItemBinCount::index: usize
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicItemPrice
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicItemPrice::index: usize
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicItemQuantity
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicItemQuantity::index: usize
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicItemSubtotal
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicItemSubtotal::index: usize
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicLineAmount
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicLineAmount::field: &'static str
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicLineAmount::index: usize
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicLineEffect
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicLineEffect::field: &'static str
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicLineEffect::index: usize
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicLineKind
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicLineKind::field: &'static str
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicLineKind::index: usize
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicOrdering
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicOrdering::field: &'static str
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicTotal
+pub radroots_event::trade::order::OrderPayloadError::InvalidEconomicTotal::field: &'static str
+pub radroots_event::trade::order::OrderPayloadError::InvalidInventoryCommitmentCount
+pub radroots_event::trade::order::OrderPayloadError::InvalidInventoryCommitmentCount::index: usize
+pub radroots_event::trade::order::OrderPayloadError::InvalidItemBinCount
+pub radroots_event::trade::order::OrderPayloadError::InvalidItemBinCount::index: usize
+pub radroots_event::trade::order::OrderPayloadError::InvalidOrderEconomicsBinding
+pub radroots_event::trade::order::OrderPayloadError::InvalidOrderEconomicsBinding::field: &'static str
+pub radroots_event::trade::order::OrderPayloadError::InvalidQuoteVersion
+pub radroots_event::trade::order::OrderPayloadError::MissingEconomicItems
+pub radroots_event::trade::order::OrderPayloadError::MissingInventoryCommitments
+pub radroots_event::trade::order::OrderPayloadError::MissingItems
+impl core::error::Error for radroots_event::trade::order::OrderPayloadError
+impl core::fmt::Display for radroots_event::trade::order::OrderPayloadError
+pub fn radroots_event::trade::order::OrderPayloadError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::trade::order::OrderPricingBasis
+pub radroots_event::trade::order::OrderPricingBasis::ListingEvent
+pub struct radroots_event::trade::order::OrderCancellation
+pub radroots_event::trade::order::OrderCancellation::buyer_pubkey: radroots_identity::key::PublicKey
+pub radroots_event::trade::order::OrderCancellation::listing_addr: radroots_event::id::ClassifiedListingAddress
+pub radroots_event::trade::order::OrderCancellation::order_id: radroots_event::id::OrderId
+pub radroots_event::trade::order::OrderCancellation::reason: alloc::string::String
+pub radroots_event::trade::order::OrderCancellation::seller_pubkey: radroots_identity::key::PublicKey
+impl radroots_event::trade::order::OrderCancellation
+pub fn radroots_event::trade::order::OrderCancellation::validate(&self) -> core::result::Result<(), radroots_event::trade::order::OrderPayloadError>
+pub struct radroots_event::trade::order::OrderDecision
+pub radroots_event::trade::order::OrderDecision::buyer_pubkey: radroots_identity::key::PublicKey
+pub radroots_event::trade::order::OrderDecision::decision: radroots_event::trade::order::OrderDecisionOutcome
+pub radroots_event::trade::order::OrderDecision::listing_addr: radroots_event::id::ClassifiedListingAddress
+pub radroots_event::trade::order::OrderDecision::order_id: radroots_event::id::OrderId
+pub radroots_event::trade::order::OrderDecision::seller_pubkey: radroots_identity::key::PublicKey
+impl radroots_event::trade::order::OrderDecision
+pub fn radroots_event::trade::order::OrderDecision::validate(&self) -> core::result::Result<(), radroots_event::trade::order::OrderPayloadError>
+pub struct radroots_event::trade::order::OrderEconomicItem
+pub radroots_event::trade::order::OrderEconomicItem::bin_count: u32
+pub radroots_event::trade::order::OrderEconomicItem::bin_id: radroots_event::id::InventoryBinId
+pub radroots_event::trade::order::OrderEconomicItem::line_subtotal: radroots_core::money::Money
+pub radroots_event::trade::order::OrderEconomicItem::quantity_amount: radroots_core::decimal::Decimal
+pub radroots_event::trade::order::OrderEconomicItem::quantity_unit: radroots_core::unit::Unit
+pub radroots_event::trade::order::OrderEconomicItem::unit_price_amount: radroots_core::decimal::Decimal
+pub radroots_event::trade::order::OrderEconomicItem::unit_price_currency: radroots_core::currency::Currency
+pub struct radroots_event::trade::order::OrderEconomicLine
+pub radroots_event::trade::order::OrderEconomicLine::actor: radroots_event::trade::order::OrderEconomicActor
+pub radroots_event::trade::order::OrderEconomicLine::amount: radroots_core::money::Money
+pub radroots_event::trade::order::OrderEconomicLine::effect: radroots_event::trade::order::OrderEconomicEffect
+pub radroots_event::trade::order::OrderEconomicLine::id: alloc::string::String
+pub radroots_event::trade::order::OrderEconomicLine::kind: radroots_event::trade::order::OrderEconomicLineKind
+pub radroots_event::trade::order::OrderEconomicLine::reason: alloc::string::String
+pub struct radroots_event::trade::order::OrderEconomicTotals
+pub radroots_event::trade::order::OrderEconomicTotals::adjustment_total: radroots_core::money::Money
+pub radroots_event::trade::order::OrderEconomicTotals::discount_total: radroots_core::money::Money
+pub radroots_event::trade::order::OrderEconomicTotals::subtotal: radroots_core::money::Money
+pub radroots_event::trade::order::OrderEconomicTotals::total: radroots_core::money::Money
+pub struct radroots_event::trade::order::OrderEconomics
+pub radroots_event::trade::order::OrderEconomics::adjustment_total: radroots_core::money::Money
+pub radroots_event::trade::order::OrderEconomics::adjustments: alloc::vec::Vec<radroots_event::trade::order::OrderEconomicLine>
+pub radroots_event::trade::order::OrderEconomics::currency: radroots_core::currency::Currency
+pub radroots_event::trade::order::OrderEconomics::discount_total: radroots_core::money::Money
+pub radroots_event::trade::order::OrderEconomics::discounts: alloc::vec::Vec<radroots_event::trade::order::OrderEconomicLine>
+pub radroots_event::trade::order::OrderEconomics::items: alloc::vec::Vec<radroots_event::trade::order::OrderEconomicItem>
+pub radroots_event::trade::order::OrderEconomics::pricing_basis: radroots_event::trade::order::OrderPricingBasis
+pub radroots_event::trade::order::OrderEconomics::quote_id: radroots_event::id::OrderQuoteId
+pub radroots_event::trade::order::OrderEconomics::quote_version: u32
+pub radroots_event::trade::order::OrderEconomics::subtotal: radroots_core::money::Money
+pub radroots_event::trade::order::OrderEconomics::total: radroots_core::money::Money
+impl radroots_event::trade::order::OrderEconomics
+pub fn radroots_event::trade::order::OrderEconomics::canonicalize(&mut self)
+pub fn radroots_event::trade::order::OrderEconomics::canonicalized(&self) -> Self
+pub fn radroots_event::trade::order::OrderEconomics::derived_totals(&self) -> core::result::Result<radroots_event::trade::order::OrderEconomicTotals, radroots_event::trade::order::OrderPayloadError>
+pub fn radroots_event::trade::order::OrderEconomics::validate(&self) -> core::result::Result<(), radroots_event::trade::order::OrderPayloadError>
+pub struct radroots_event::trade::order::OrderEnvelope<T>
+pub radroots_event::trade::order::OrderEnvelope::domain: radroots_event::trade::order::CommercialDomain
+pub radroots_event::trade::order::OrderEnvelope::listing_addr: alloc::string::String
+pub radroots_event::trade::order::OrderEnvelope::message_type: radroots_event::trade::order::OrderEventType
+pub radroots_event::trade::order::OrderEnvelope::order_id: alloc::string::String
+pub radroots_event::trade::order::OrderEnvelope::payload: T
+pub radroots_event::trade::order::OrderEnvelope::version: u16
+impl<T> radroots_event::trade::order::OrderEnvelope<T>
+pub fn radroots_event::trade::order::OrderEnvelope<T>::new(radroots_event::trade::order::OrderEventType, impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>, T) -> Self
+pub fn radroots_event::trade::order::OrderEnvelope<T>::validate(&self) -> core::result::Result<(), radroots_event::trade::order::OrderEnvelopeError>
+pub struct radroots_event::trade::order::OrderInventoryCommitment
+pub radroots_event::trade::order::OrderInventoryCommitment::bin_count: u32
+pub radroots_event::trade::order::OrderInventoryCommitment::bin_id: radroots_event::id::InventoryBinId
+pub struct radroots_event::trade::order::OrderItem
+pub radroots_event::trade::order::OrderItem::bin_count: u32
+pub radroots_event::trade::order::OrderItem::bin_id: radroots_event::id::InventoryBinId
+pub struct radroots_event::trade::order::OrderRequest
+pub radroots_event::trade::order::OrderRequest::buyer_pubkey: radroots_identity::key::PublicKey
+pub radroots_event::trade::order::OrderRequest::economics: radroots_event::trade::order::OrderEconomics
+pub radroots_event::trade::order::OrderRequest::items: alloc::vec::Vec<radroots_event::trade::order::OrderItem>
+pub radroots_event::trade::order::OrderRequest::listing_addr: radroots_event::id::ClassifiedListingAddress
+pub radroots_event::trade::order::OrderRequest::order_id: radroots_event::id::OrderId
+pub radroots_event::trade::order::OrderRequest::seller_pubkey: radroots_identity::key::PublicKey
+impl radroots_event::trade::order::OrderRequest
+pub fn radroots_event::trade::order::OrderRequest::validate(&self) -> core::result::Result<(), radroots_event::trade::order::OrderPayloadError>
+pub const radroots_event::trade::order::RADROOTS_COMMERCIAL_LISTING_DOMAIN: &str
+pub const radroots_event::trade::order::RADROOTS_ORDER_ENVELOPE_VERSION: u16
+pub mod radroots_event::trade::order_economics
+pub enum radroots_event::trade::order_economics::OrderEconomicActor
+pub radroots_event::trade::order_economics::OrderEconomicActor::Buyer
+pub radroots_event::trade::order_economics::OrderEconomicActor::Seller
+pub enum radroots_event::trade::order_economics::OrderEconomicEffect
+pub radroots_event::trade::order_economics::OrderEconomicEffect::Decrease
+pub radroots_event::trade::order_economics::OrderEconomicEffect::Increase
+pub enum radroots_event::trade::order_economics::OrderEconomicLineKind
+pub radroots_event::trade::order_economics::OrderEconomicLineKind::BasketAdjustment
+pub radroots_event::trade::order_economics::OrderEconomicLineKind::ListingDiscount
+pub radroots_event::trade::order_economics::OrderEconomicLineKind::RevisionAdjustment
+pub enum radroots_event::trade::order_economics::OrderPricingBasis
+pub radroots_event::trade::order_economics::OrderPricingBasis::ListingEvent
+pub struct radroots_event::trade::order_economics::OrderEconomicItem
+pub radroots_event::trade::order_economics::OrderEconomicItem::bin_count: u32
+pub radroots_event::trade::order_economics::OrderEconomicItem::bin_id: radroots_event::id::InventoryBinId
+pub radroots_event::trade::order_economics::OrderEconomicItem::line_subtotal: radroots_core::money::Money
+pub radroots_event::trade::order_economics::OrderEconomicItem::quantity_amount: radroots_core::decimal::Decimal
+pub radroots_event::trade::order_economics::OrderEconomicItem::quantity_unit: radroots_core::unit::Unit
+pub radroots_event::trade::order_economics::OrderEconomicItem::unit_price_amount: radroots_core::decimal::Decimal
+pub radroots_event::trade::order_economics::OrderEconomicItem::unit_price_currency: radroots_core::currency::Currency
+pub struct radroots_event::trade::order_economics::OrderEconomicLine
+pub radroots_event::trade::order_economics::OrderEconomicLine::actor: radroots_event::trade::order::OrderEconomicActor
+pub radroots_event::trade::order_economics::OrderEconomicLine::amount: radroots_core::money::Money
+pub radroots_event::trade::order_economics::OrderEconomicLine::effect: radroots_event::trade::order::OrderEconomicEffect
+pub radroots_event::trade::order_economics::OrderEconomicLine::id: alloc::string::String
+pub radroots_event::trade::order_economics::OrderEconomicLine::kind: radroots_event::trade::order::OrderEconomicLineKind
+pub radroots_event::trade::order_economics::OrderEconomicLine::reason: alloc::string::String
+pub struct radroots_event::trade::order_economics::OrderEconomicTotals
+pub radroots_event::trade::order_economics::OrderEconomicTotals::adjustment_total: radroots_core::money::Money
+pub radroots_event::trade::order_economics::OrderEconomicTotals::discount_total: radroots_core::money::Money
+pub radroots_event::trade::order_economics::OrderEconomicTotals::subtotal: radroots_core::money::Money
+pub radroots_event::trade::order_economics::OrderEconomicTotals::total: radroots_core::money::Money
+pub struct radroots_event::trade::order_economics::OrderEconomics
+pub radroots_event::trade::order_economics::OrderEconomics::adjustment_total: radroots_core::money::Money
+pub radroots_event::trade::order_economics::OrderEconomics::adjustments: alloc::vec::Vec<radroots_event::trade::order::OrderEconomicLine>
+pub radroots_event::trade::order_economics::OrderEconomics::currency: radroots_core::currency::Currency
+pub radroots_event::trade::order_economics::OrderEconomics::discount_total: radroots_core::money::Money
+pub radroots_event::trade::order_economics::OrderEconomics::discounts: alloc::vec::Vec<radroots_event::trade::order::OrderEconomicLine>
+pub radroots_event::trade::order_economics::OrderEconomics::items: alloc::vec::Vec<radroots_event::trade::order::OrderEconomicItem>
+pub radroots_event::trade::order_economics::OrderEconomics::pricing_basis: radroots_event::trade::order::OrderPricingBasis
+pub radroots_event::trade::order_economics::OrderEconomics::quote_id: radroots_event::id::OrderQuoteId
+pub radroots_event::trade::order_economics::OrderEconomics::quote_version: u32
+pub radroots_event::trade::order_economics::OrderEconomics::subtotal: radroots_core::money::Money
+pub radroots_event::trade::order_economics::OrderEconomics::total: radroots_core::money::Money
+impl radroots_event::trade::order::OrderEconomics
+pub fn radroots_event::trade::order::OrderEconomics::canonicalize(&mut self)
+pub fn radroots_event::trade::order::OrderEconomics::canonicalized(&self) -> Self
+pub fn radroots_event::trade::order::OrderEconomics::derived_totals(&self) -> core::result::Result<radroots_event::trade::order::OrderEconomicTotals, radroots_event::trade::order::OrderPayloadError>
+pub fn radroots_event::trade::order::OrderEconomics::validate(&self) -> core::result::Result<(), radroots_event::trade::order::OrderPayloadError>
+pub struct radroots_event::trade::order_economics::OrderItem
+pub radroots_event::trade::order_economics::OrderItem::bin_count: u32
+pub radroots_event::trade::order_economics::OrderItem::bin_id: radroots_event::id::InventoryBinId
+pub mod radroots_event::trade::validation
+pub enum radroots_event::trade::validation::OperationalListingValidationError
+pub radroots_event::trade::validation::OperationalListingValidationError::InvalidBin
+pub radroots_event::trade::validation::OperationalListingValidationError::InvalidInventory
+pub radroots_event::trade::validation::OperationalListingValidationError::InvalidKind
+pub radroots_event::trade::validation::OperationalListingValidationError::InvalidKind::kind: u32
+pub radroots_event::trade::validation::OperationalListingValidationError::InvalidLocationGeohash
+pub radroots_event::trade::validation::OperationalListingValidationError::InvalidPrice
+pub radroots_event::trade::validation::OperationalListingValidationError::InvalidProfile
+pub radroots_event::trade::validation::OperationalListingValidationError::InvalidSeller
+pub radroots_event::trade::validation::OperationalListingValidationError::ListingEventFetchFailed
+pub radroots_event::trade::validation::OperationalListingValidationError::ListingEventFetchFailed::listing_addr: alloc::string::String
+pub radroots_event::trade::validation::OperationalListingValidationError::ListingEventNotFound
+pub radroots_event::trade::validation::OperationalListingValidationError::ListingEventNotFound::listing_addr: alloc::string::String
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingAvailability
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingBins
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingDeliveryMethod
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingDescription
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingFarmProfile
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingFarmRecord
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingInventory
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingListingId
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingLocation
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingLocationGeohash
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingLocationLocality
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingPrice
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingPrimaryBin
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingProductType
+pub radroots_event::trade::validation::OperationalListingValidationError::MissingTitle
+pub radroots_event::trade::validation::OperationalListingValidationError::ParseError
+pub radroots_event::trade::validation::OperationalListingValidationError::ParseError::error: radroots_event::listing::operational::OperationalListingParseError
+impl core::error::Error for radroots_event::trade::validation::OperationalListingValidationError
+impl core::fmt::Display for radroots_event::trade::validation::OperationalListingValidationError
+pub fn radroots_event::trade::validation::OperationalListingValidationError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event::trade::TradeDecisionV1
+pub radroots_event::trade::TradeDecisionV1::Accepted
+pub radroots_event::trade::TradeDecisionV1::Accepted::reservation_assertion: core::option::Option<radroots_event::trade::SellerReservationAssertionV1>
+pub radroots_event::trade::TradeDecisionV1::Declined
+pub radroots_event::trade::TradeDecisionV1::Declined::reason: alloc::string::String
+impl radroots_event::trade::TradeDecisionV1
+pub fn radroots_event::trade::TradeDecisionV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub enum radroots_event::trade::TradeMutationBodyV1
+pub radroots_event::trade::TradeMutationBodyV1::Cancellation
+pub radroots_event::trade::TradeMutationBodyV1::Cancellation::reason: alloc::string::String
+pub radroots_event::trade::TradeMutationBodyV1::Cancellation::target_candidate_id: core::option::Option<radroots_event::id::CandidateId>
+pub radroots_event::trade::TradeMutationBodyV1::Cancellation::target_claim_mutation_id: core::option::Option<radroots_event::id::MutationId>
+pub radroots_event::trade::TradeMutationBodyV1::Decision
+pub radroots_event::trade::TradeMutationBodyV1::Decision::candidate_id: radroots_event::id::CandidateId
+pub radroots_event::trade::TradeMutationBodyV1::Decision::decision: radroots_event::trade::TradeDecisionV1
+pub radroots_event::trade::TradeMutationBodyV1::Decision::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_event::trade::TradeMutationBodyV1::Proposal
+pub radroots_event::trade::TradeMutationBodyV1::Proposal::candidate: radroots_event::trade::TradeCandidateTermsV1
+pub radroots_event::trade::TradeMutationBodyV1::RevisionDecision
+pub radroots_event::trade::TradeMutationBodyV1::RevisionDecision::candidate_id: radroots_event::id::CandidateId
+pub radroots_event::trade::TradeMutationBodyV1::RevisionDecision::decision: radroots_event::trade::TradeDecisionV1
+pub radroots_event::trade::TradeMutationBodyV1::RevisionDecision::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_event::trade::TradeMutationBodyV1::RevisionProposal
+pub radroots_event::trade::TradeMutationBodyV1::RevisionProposal::candidate: radroots_event::trade::TradeCandidateTermsV1
+impl radroots_event::trade::TradeMutationBodyV1
+pub const fn radroots_event::trade::TradeMutationBodyV1::mutation_kind(&self) -> radroots_event::trade::TradeMutationKindV1
+pub fn radroots_event::trade::TradeMutationBodyV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub enum radroots_event::trade::TradeMutationKindV1
+pub radroots_event::trade::TradeMutationKindV1::Cancellation
+pub radroots_event::trade::TradeMutationKindV1::Decision
+pub radroots_event::trade::TradeMutationKindV1::Proposal
+pub radroots_event::trade::TradeMutationKindV1::RevisionDecision
+pub radroots_event::trade::TradeMutationKindV1::RevisionProposal
+impl radroots_event::trade::TradeMutationKindV1
+pub const fn radroots_event::trade::TradeMutationKindV1::contract_id(self) -> &'static str
+pub const fn radroots_event::trade::TradeMutationKindV1::nostr_kind(self) -> u32
+pub enum radroots_event::trade::TradeProtocolError
+pub radroots_event::trade::TradeProtocolError::CandidateIdMismatch
+pub radroots_event::trade::TradeProtocolError::CandidateIdMismatch::computed: alloc::string::String
+pub radroots_event::trade::TradeProtocolError::CandidateIdMismatch::declared: alloc::string::String
+pub radroots_event::trade::TradeProtocolError::ContentTooLarge
+pub radroots_event::trade::TradeProtocolError::ContentTooLarge::actual: usize
+pub radroots_event::trade::TradeProtocolError::ContentTooLarge::max: usize
+pub radroots_event::trade::TradeProtocolError::ContractMismatch
+pub radroots_event::trade::TradeProtocolError::ContractMismatch::actual: alloc::string::String
+pub radroots_event::trade::TradeProtocolError::ContractMismatch::expected: &'static str
+pub radroots_event::trade::TradeProtocolError::DuplicateKey(alloc::string::String)
+pub radroots_event::trade::TradeProtocolError::DuplicateParent
+pub radroots_event::trade::TradeProtocolError::EmptyField(&'static str)
+pub radroots_event::trade::TradeProtocolError::InvalidField(&'static str)
+pub radroots_event::trade::TradeProtocolError::InvalidIdentifier
+pub radroots_event::trade::TradeProtocolError::InvalidIdentifier::error: radroots_event::id::ParseError
+pub radroots_event::trade::TradeProtocolError::InvalidIdentifier::field: &'static str
+pub radroots_event::trade::TradeProtocolError::InvalidInitialParents
+pub radroots_event::trade::TradeProtocolError::InvalidJson(alloc::string::String)
+pub radroots_event::trade::TradeProtocolError::InvalidSchemaVersion
+pub radroots_event::trade::TradeProtocolError::InvalidSchemaVersion::actual: u16
+pub radroots_event::trade::TradeProtocolError::InvalidSchemaVersion::expected: u16
+pub radroots_event::trade::TradeProtocolError::InvalidTimeRange
+pub radroots_event::trade::TradeProtocolError::MissingCancellationTarget
+pub radroots_event::trade::TradeProtocolError::MissingLines
+pub radroots_event::trade::TradeProtocolError::MissingParentMutation
+pub radroots_event::trade::TradeProtocolError::MissingReservationCommitments
+pub radroots_event::trade::TradeProtocolError::MutationIdMismatch
+pub radroots_event::trade::TradeProtocolError::MutationIdMismatch::computed: alloc::string::String
+pub radroots_event::trade::TradeProtocolError::MutationIdMismatch::declared: alloc::string::String
+pub radroots_event::trade::TradeProtocolError::NonCanonicalJson
+pub radroots_event::trade::TradeProtocolError::SelfParent
+pub radroots_event::trade::TradeProtocolError::TooManyAdjustments
+pub radroots_event::trade::TradeProtocolError::TooManyAdjustments::actual: usize
+pub radroots_event::trade::TradeProtocolError::TooManyAdjustments::max: usize
+pub radroots_event::trade::TradeProtocolError::TooManyLines
+pub radroots_event::trade::TradeProtocolError::TooManyLines::actual: usize
+pub radroots_event::trade::TradeProtocolError::TooManyLines::max: usize
+pub radroots_event::trade::TradeProtocolError::TooManyParents
+pub radroots_event::trade::TradeProtocolError::TooManyParents::actual: usize
+pub radroots_event::trade::TradeProtocolError::TooManyParents::max: usize
+pub radroots_event::trade::TradeProtocolError::UnsortedParents
+pub radroots_event::trade::TradeProtocolError::UnsupportedNumber
+impl core::error::Error for radroots_event::trade::TradeProtocolError
+impl core::fmt::Display for radroots_event::trade::TradeProtocolError
+pub fn radroots_event::trade::TradeProtocolError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::trade::CandidateId(_)
+impl radroots_event::id::CandidateId
+pub const fn radroots_event::id::CandidateId::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_event::id::CandidateId::from_bytes([u8; 32]) -> Self
+pub const fn radroots_event::id::CandidateId::into_bytes(self) -> [u8; 32]
+pub fn radroots_event::id::CandidateId::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::CandidateId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub fn radroots_event::id::CandidateId::to_hex(&self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_event::id::CandidateId
+pub fn radroots_event::id::CandidateId::as_ref(&self) -> &[u8]
+impl core::convert::From<[u8; 32]> for radroots_event::id::CandidateId
+pub fn radroots_event::id::CandidateId::from([u8; 32]) -> Self
+impl core::convert::From<radroots_event::id::CandidateId> for [u8; 32]
+pub fn [u8; 32]::from(radroots_event::id::CandidateId) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::CandidateId
+pub type radroots_event::id::CandidateId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::CandidateId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::CandidateId
+pub type radroots_event::id::CandidateId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::CandidateId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::CandidateId
+pub fn radroots_event::id::CandidateId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::CandidateId
+pub type radroots_event::id::CandidateId::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::CandidateId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::CandidateId
+pub fn radroots_event::id::CandidateId::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_event::id::CandidateId
+pub fn radroots_event::id::CandidateId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::trade::FulfillmentProfileV1
+pub radroots_event::trade::FulfillmentProfileV1::ends_at_unix_s: u64
+pub radroots_event::trade::FulfillmentProfileV1::fold: u8
+pub radroots_event::trade::FulfillmentProfileV1::location_class: alloc::string::String
+pub radroots_event::trade::FulfillmentProfileV1::method: alloc::string::String
+pub radroots_event::trade::FulfillmentProfileV1::profile_id: alloc::string::String
+pub radroots_event::trade::FulfillmentProfileV1::requires_private_terms: bool
+pub radroots_event::trade::FulfillmentProfileV1::starts_at_unix_s: u64
+pub radroots_event::trade::FulfillmentProfileV1::timezone: alloc::string::String
+pub radroots_event::trade::FulfillmentProfileV1::utc_offset_seconds: i32
+impl radroots_event::trade::FulfillmentProfileV1
+pub fn radroots_event::trade::FulfillmentProfileV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub struct radroots_event::trade::MutationId(_)
+impl radroots_event::id::MutationId
+pub const fn radroots_event::id::MutationId::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_event::id::MutationId::from_bytes([u8; 32]) -> Self
+pub const fn radroots_event::id::MutationId::into_bytes(self) -> [u8; 32]
+pub fn radroots_event::id::MutationId::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::MutationId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub fn radroots_event::id::MutationId::to_hex(&self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_event::id::MutationId
+pub fn radroots_event::id::MutationId::as_ref(&self) -> &[u8]
+impl core::convert::From<[u8; 32]> for radroots_event::id::MutationId
+pub fn radroots_event::id::MutationId::from([u8; 32]) -> Self
+impl core::convert::From<radroots_event::id::MutationId> for [u8; 32]
+pub fn [u8; 32]::from(radroots_event::id::MutationId) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::MutationId
+pub type radroots_event::id::MutationId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::MutationId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::MutationId
+pub type radroots_event::id::MutationId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::MutationId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::MutationId
+pub fn radroots_event::id::MutationId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::MutationId
+pub type radroots_event::id::MutationId::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::MutationId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::MutationId
+pub fn radroots_event::id::MutationId::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_event::id::MutationId
+pub fn radroots_event::id::MutationId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::trade::SellerReservationAssertionV1
+pub radroots_event::trade::SellerReservationAssertionV1::assertion_commitment: alloc::string::String
+pub radroots_event::trade::SellerReservationAssertionV1::candidate_id: radroots_event::id::CandidateId
+pub radroots_event::trade::SellerReservationAssertionV1::commitments: alloc::vec::Vec<radroots_event::trade::SellerReservationLineV1>
+pub radroots_event::trade::SellerReservationAssertionV1::inventory_authority_id: radroots_identity::key::PublicKey
+pub radroots_event::trade::SellerReservationAssertionV1::inventory_epoch: u64
+pub radroots_event::trade::SellerReservationAssertionV1::reservation_expires_at_unix_s: u64
+pub radroots_event::trade::SellerReservationAssertionV1::reservation_id: radroots_event::id::DTag
+impl radroots_event::trade::SellerReservationAssertionV1
+pub fn radroots_event::trade::SellerReservationAssertionV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub struct radroots_event::trade::SellerReservationLineV1
+pub radroots_event::trade::SellerReservationLineV1::bin_id: radroots_event::id::InventoryBinId
+pub radroots_event::trade::SellerReservationLineV1::line_id: radroots_event::id::DTag
+pub radroots_event::trade::SellerReservationLineV1::quantity_mantissa: alloc::string::String
+pub radroots_event::trade::SellerReservationLineV1::quantity_scale: u8
+pub radroots_event::trade::SellerReservationLineV1::unit_code: alloc::string::String
+impl radroots_event::trade::SellerReservationLineV1
+pub fn radroots_event::trade::SellerReservationLineV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub struct radroots_event::trade::TradeCancellationProfileV1
+pub radroots_event::trade::TradeCancellationProfileV1::buyer_pre_agreement: bool
+pub radroots_event::trade::TradeCancellationProfileV1::post_agreement_cutoff_unix_s: core::option::Option<u64>
+pub radroots_event::trade::TradeCancellationProfileV1::profile_id: alloc::string::String
+impl radroots_event::trade::TradeCancellationProfileV1
+pub fn radroots_event::trade::TradeCancellationProfileV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub struct radroots_event::trade::TradeCandidateLineV1
+pub radroots_event::trade::TradeCandidateLineV1::bin_id: radroots_event::id::InventoryBinId
+pub radroots_event::trade::TradeCandidateLineV1::currency_code: alloc::string::String
+pub radroots_event::trade::TradeCandidateLineV1::line_id: radroots_event::id::DTag
+pub radroots_event::trade::TradeCandidateLineV1::line_subtotal_mantissa: alloc::string::String
+pub radroots_event::trade::TradeCandidateLineV1::listing_addr: radroots_event::id::ClassifiedListingAddress
+pub radroots_event::trade::TradeCandidateLineV1::listing_event_id: radroots_event::id::EventId
+pub radroots_event::trade::TradeCandidateLineV1::listing_snapshot_sha256: alloc::string::String
+pub radroots_event::trade::TradeCandidateLineV1::option_id: core::option::Option<alloc::string::String>
+pub radroots_event::trade::TradeCandidateLineV1::product_id: alloc::string::String
+pub radroots_event::trade::TradeCandidateLineV1::quantity_mantissa: alloc::string::String
+pub radroots_event::trade::TradeCandidateLineV1::quantity_scale: u8
+pub radroots_event::trade::TradeCandidateLineV1::replaces_line_id: core::option::Option<radroots_event::id::DTag>
+pub radroots_event::trade::TradeCandidateLineV1::unit_code: alloc::string::String
+pub radroots_event::trade::TradeCandidateLineV1::unit_price_mantissa: alloc::string::String
+pub radroots_event::trade::TradeCandidateLineV1::unit_profile: alloc::string::String
+impl radroots_event::trade::TradeCandidateLineV1
+pub fn radroots_event::trade::TradeCandidateLineV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub struct radroots_event::trade::TradeCandidateTermsV1
+pub radroots_event::trade::TradeCandidateTermsV1::base_candidate_id: core::option::Option<radroots_event::id::CandidateId>
+pub radroots_event::trade::TradeCandidateTermsV1::buyer_pubkey: radroots_identity::key::PublicKey
+pub radroots_event::trade::TradeCandidateTermsV1::cancellation: radroots_event::trade::TradeCancellationProfileV1
+pub radroots_event::trade::TradeCandidateTermsV1::candidate_id: core::option::Option<radroots_event::id::CandidateId>
+pub radroots_event::trade::TradeCandidateTermsV1::economics: radroots_event::trade::TradeEconomicsProfileV1
+pub radroots_event::trade::TradeCandidateTermsV1::farm_id: radroots_event::id::DTag
+pub radroots_event::trade::TradeCandidateTermsV1::fulfillment: radroots_event::trade::FulfillmentProfileV1
+pub radroots_event::trade::TradeCandidateTermsV1::line_tombstones: alloc::vec::Vec<radroots_event::trade::TradeLineTombstoneV1>
+pub radroots_event::trade::TradeCandidateTermsV1::lines: alloc::vec::Vec<radroots_event::trade::TradeCandidateLineV1>
+pub radroots_event::trade::TradeCandidateTermsV1::private_terms: core::option::Option<radroots_event::trade::TradePrivateTermsRefV1>
+pub radroots_event::trade::TradeCandidateTermsV1::proposal_expires_at_unix_s: u64
+pub radroots_event::trade::TradeCandidateTermsV1::schema_version: u16
+pub radroots_event::trade::TradeCandidateTermsV1::seller_pubkey: radroots_identity::key::PublicKey
+pub radroots_event::trade::TradeCandidateTermsV1::supersession_intent: core::option::Option<alloc::string::String>
+impl radroots_event::trade::TradeCandidateTermsV1
+pub fn radroots_event::trade::TradeCandidateTermsV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub struct radroots_event::trade::TradeCanonicalMutationV1
+pub radroots_event::trade::TradeCanonicalMutationV1::content: alloc::string::String
+pub radroots_event::trade::TradeCanonicalMutationV1::envelope: radroots_event::trade::TradeMutationEnvelopeV1
+pub radroots_event::trade::TradeCanonicalMutationV1::mutation_id: radroots_event::id::MutationId
+pub struct radroots_event::trade::TradeEconomicAdjustmentV1
+pub radroots_event::trade::TradeEconomicAdjustmentV1::actor: alloc::string::String
+pub radroots_event::trade::TradeEconomicAdjustmentV1::adjustment_id: radroots_event::id::DTag
+pub radroots_event::trade::TradeEconomicAdjustmentV1::amount_mantissa: alloc::string::String
+pub radroots_event::trade::TradeEconomicAdjustmentV1::effect: alloc::string::String
+pub radroots_event::trade::TradeEconomicAdjustmentV1::reason: alloc::string::String
+impl radroots_event::trade::TradeEconomicAdjustmentV1
+pub fn radroots_event::trade::TradeEconomicAdjustmentV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub struct radroots_event::trade::TradeEconomicsProfileV1
+pub radroots_event::trade::TradeEconomicsProfileV1::adjustment_total_mantissa: alloc::string::String
+pub radroots_event::trade::TradeEconomicsProfileV1::adjustments: alloc::vec::Vec<radroots_event::trade::TradeEconomicAdjustmentV1>
+pub radroots_event::trade::TradeEconomicsProfileV1::currency_code: alloc::string::String
+pub radroots_event::trade::TradeEconomicsProfileV1::currency_exponent: u8
+pub radroots_event::trade::TradeEconomicsProfileV1::discount_total_mantissa: alloc::string::String
+pub radroots_event::trade::TradeEconomicsProfileV1::profile_id: alloc::string::String
+pub radroots_event::trade::TradeEconomicsProfileV1::rounding_profile: alloc::string::String
+pub radroots_event::trade::TradeEconomicsProfileV1::subtotal_mantissa: alloc::string::String
+pub radroots_event::trade::TradeEconomicsProfileV1::total_mantissa: alloc::string::String
+impl radroots_event::trade::TradeEconomicsProfileV1
+pub fn radroots_event::trade::TradeEconomicsProfileV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub struct radroots_event::trade::TradeId(_)
+impl radroots_event::id::TradeId
+pub const fn radroots_event::id::TradeId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_event::id::TradeId::from_bytes([u8; 16]) -> Self
+pub const fn radroots_event::id::TradeId::into_bytes(self) -> [u8; 16]
+pub fn radroots_event::id::TradeId::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::TradeId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub fn radroots_event::id::TradeId::to_hex(&self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_event::id::TradeId
+pub fn radroots_event::id::TradeId::as_ref(&self) -> &[u8]
+impl core::convert::From<[u8; 16]> for radroots_event::id::TradeId
+pub fn radroots_event::id::TradeId::from([u8; 16]) -> Self
+impl core::convert::From<radroots_event::id::TradeId> for [u8; 16]
+pub fn [u8; 16]::from(radroots_event::id::TradeId) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::TradeId
+pub type radroots_event::id::TradeId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::TradeId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::TradeId
+pub type radroots_event::id::TradeId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::TradeId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::TradeId
+pub fn radroots_event::id::TradeId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::TradeId
+pub type radroots_event::id::TradeId::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::TradeId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::TradeId
+pub fn radroots_event::id::TradeId::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_event::id::TradeId
+pub fn radroots_event::id::TradeId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::trade::TradeLineTombstoneV1
+pub radroots_event::trade::TradeLineTombstoneV1::line_id: radroots_event::id::DTag
+pub radroots_event::trade::TradeLineTombstoneV1::reason: alloc::string::String
+impl radroots_event::trade::TradeLineTombstoneV1
+pub fn radroots_event::trade::TradeLineTombstoneV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub struct radroots_event::trade::TradeMutationEnvelopeV1
+pub radroots_event::trade::TradeMutationEnvelopeV1::author_pubkey: radroots_identity::key::PublicKey
+pub radroots_event::trade::TradeMutationEnvelopeV1::authored_at_unix_s: u64
+pub radroots_event::trade::TradeMutationEnvelopeV1::body: radroots_event::trade::TradeMutationBodyV1
+pub radroots_event::trade::TradeMutationEnvelopeV1::buyer_pubkey: radroots_identity::key::PublicKey
+pub radroots_event::trade::TradeMutationEnvelopeV1::contract_id: alloc::string::String
+pub radroots_event::trade::TradeMutationEnvelopeV1::counterparty_pubkey: radroots_identity::key::PublicKey
+pub radroots_event::trade::TradeMutationEnvelopeV1::farm_id: radroots_event::id::DTag
+pub radroots_event::trade::TradeMutationEnvelopeV1::mutation_id: core::option::Option<radroots_event::id::MutationId>
+pub radroots_event::trade::TradeMutationEnvelopeV1::parent_mutation_ids: alloc::vec::Vec<radroots_event::id::MutationId>
+pub radroots_event::trade::TradeMutationEnvelopeV1::root_mutation_id: core::option::Option<radroots_event::id::MutationId>
+pub radroots_event::trade::TradeMutationEnvelopeV1::schema_version: u16
+pub radroots_event::trade::TradeMutationEnvelopeV1::seller_pubkey: radroots_identity::key::PublicKey
+pub radroots_event::trade::TradeMutationEnvelopeV1::trade_id: radroots_event::id::TradeId
+impl radroots_event::trade::TradeMutationEnvelopeV1
+pub fn radroots_event::trade::TradeMutationEnvelopeV1::mutation_kind(&self) -> radroots_event::trade::TradeMutationKindV1
+pub fn radroots_event::trade::TradeMutationEnvelopeV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub struct radroots_event::trade::TradePrivateTermsRefV1
+pub radroots_event::trade::TradePrivateTermsRefV1::artifact_id: alloc::string::String
+pub radroots_event::trade::TradePrivateTermsRefV1::ciphertext_commitment: alloc::string::String
+pub radroots_event::trade::TradePrivateTermsRefV1::required_acknowledgement: bool
+pub radroots_event::trade::TradePrivateTermsRefV1::schema_id: alloc::string::String
+impl radroots_event::trade::TradePrivateTermsRefV1
+pub fn radroots_event::trade::TradePrivateTermsRefV1::validate(&self) -> core::result::Result<(), radroots_event::trade::TradeProtocolError>
+pub const radroots_event::trade::RADROOTS_TRADE_CANCELLATION_CONTRACT_ID: &str
+pub const radroots_event::trade::RADROOTS_TRADE_CANDIDATE_DOMAIN: &[u8]
+pub const radroots_event::trade::RADROOTS_TRADE_DECISION_CONTRACT_ID: &str
+pub const radroots_event::trade::RADROOTS_TRADE_MAX_ACTIVE_LINES: usize
+pub const radroots_event::trade::RADROOTS_TRADE_MAX_ADJUSTMENTS: usize
+pub const radroots_event::trade::RADROOTS_TRADE_MAX_PARENT_MUTATIONS: usize
+pub const radroots_event::trade::RADROOTS_TRADE_MAX_PRIVATE_ARTIFACT_BYTES: usize
+pub const radroots_event::trade::RADROOTS_TRADE_MAX_PUBLIC_CONTENT_BYTES: usize
+pub const radroots_event::trade::RADROOTS_TRADE_MUTATION_CONTRACT_IDS: [&str; 5]
+pub const radroots_event::trade::RADROOTS_TRADE_MUTATION_DOMAIN: &[u8]
+pub const radroots_event::trade::RADROOTS_TRADE_PROPOSAL_CONTRACT_ID: &str
+pub const radroots_event::trade::RADROOTS_TRADE_REVISION_DECISION_CONTRACT_ID: &str
+pub const radroots_event::trade::RADROOTS_TRADE_REVISION_PROPOSAL_CONTRACT_ID: &str
+pub const radroots_event::trade::RADROOTS_TRADE_SCHEMA_VERSION: u16
+pub const radroots_event::trade::RADROOTS_TRADE_SELLER_RESERVATION_ASSERTION_CONTRACT_ID: &str
+pub fn radroots_event::trade::canonical_jcs_from_str(&str) -> core::result::Result<alloc::string::String, radroots_event::trade::TradeProtocolError>
+pub fn radroots_event::trade::canonical_jcs_value(&serde_json::value::Value) -> core::result::Result<alloc::string::String, radroots_event::trade::TradeProtocolError>
+pub fn radroots_event::trade::canonical_trade_candidate_id(&radroots_event::trade::TradeCandidateTermsV1) -> core::result::Result<radroots_event::id::CandidateId, radroots_event::trade::TradeProtocolError>
+pub fn radroots_event::trade::canonical_trade_mutation_content(radroots_event::trade::TradeMutationEnvelopeV1) -> core::result::Result<radroots_event::trade::TradeCanonicalMutationV1, radroots_event::trade::TradeProtocolError>
+pub fn radroots_event::trade::canonical_trade_mutation_id(&radroots_event::trade::TradeMutationEnvelopeV1) -> core::result::Result<radroots_event::id::MutationId, radroots_event::trade::TradeProtocolError>
+pub fn radroots_event::trade::trade_mutation_from_canonical_content(&str) -> core::result::Result<radroots_event::trade::TradeMutationEnvelopeV1, radroots_event::trade::TradeProtocolError>
+pub mod radroots_event::wire
+#[non_exhaustive] pub enum radroots_event::Error
+pub radroots_event::Error::ContractValidation(crate::contract::registry_v7::ContractValidationError)
+pub radroots_event::Error::IdMismatch
+pub radroots_event::Error::IdMismatch::actual: radroots_event::id::EventId
+pub radroots_event::Error::IdMismatch::expected: radroots_event::id::EventId
+pub radroots_event::Error::MalformedEnvelope
+pub radroots_event::Error::SignatureInvalid
+impl radroots_event::Error
+pub const fn radroots_event::Error::code(&self) -> &'static str
+impl core::error::Error for radroots_event::Error
+impl core::fmt::Display for radroots_event::Error
+pub fn radroots_event::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event::Event
+impl radroots_event::envelope::EventEnvelope
+pub fn radroots_event::envelope::EventEnvelope::author(&self) -> &radroots_identity::key::PublicKey
+pub fn radroots_event::envelope::EventEnvelope::content(&self) -> &str
+pub fn radroots_event::envelope::EventEnvelope::created_at(&self) -> radroots_event::envelope::EventTimestamp
+pub fn radroots_event::envelope::EventEnvelope::created_at_u64(&self) -> u64
+pub fn radroots_event::envelope::EventEnvelope::id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event::envelope::EventEnvelope::id_hex(&self) -> alloc::string::String
+pub fn radroots_event::envelope::EventEnvelope::kind(&self) -> radroots_event::envelope::EventKind
+pub fn radroots_event::envelope::EventEnvelope::kind_class(&self) -> radroots_event::envelope::EventKindClass
+pub fn radroots_event::envelope::EventEnvelope::kind_u32(&self) -> u32
+pub fn radroots_event::envelope::EventEnvelope::new(radroots_event::envelope::EventEnvelopeParts) -> core::result::Result<Self, radroots_event::envelope::EventEnvelopeError>
+pub fn radroots_event::envelope::EventEnvelope::new_with_limits(radroots_event::envelope::EventEnvelopeParts, radroots_event::envelope::EventEnvelopeLimits) -> core::result::Result<Self, radroots_event::envelope::EventEnvelopeError>
+pub fn radroots_event::envelope::EventEnvelope::sig(&self) -> &radroots_event::id::EventSignature
+pub fn radroots_event::envelope::EventEnvelope::signature_hex(&self) -> alloc::string::String
+pub fn radroots_event::envelope::EventEnvelope::tag_slices(&self) -> &[radroots_event::envelope::EventTag]
+pub fn radroots_event::envelope::EventEnvelope::tags(&self) -> &radroots_event::envelope::EventTags
+pub fn radroots_event::envelope::EventEnvelope::tags_as_vec(&self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event::envelope::EventEnvelope::to_nip01_wire(&self) -> Nip01EventWire
+pub struct radroots_event::EventId(_)
+impl radroots_event::id::EventId
+pub const fn radroots_event::id::EventId::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_event::id::EventId::from_bytes([u8; 32]) -> Self
+pub const fn radroots_event::id::EventId::into_bytes(self) -> [u8; 32]
+pub fn radroots_event::id::EventId::into_string(self) -> alloc::string::String
+pub fn radroots_event::id::EventId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub fn radroots_event::id::EventId::to_hex(&self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_event::id::EventId
+pub fn radroots_event::id::EventId::as_ref(&self) -> &[u8]
+impl core::convert::From<[u8; 32]> for radroots_event::id::EventId
+pub fn radroots_event::id::EventId::from([u8; 32]) -> Self
+impl core::convert::From<radroots_event::id::EventId> for [u8; 32]
+pub fn [u8; 32]::from(radroots_event::id::EventId) -> Self
+impl core::convert::TryFrom<&str> for radroots_event::id::EventId
+pub type radroots_event::id::EventId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::EventId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_event::id::EventId
+pub type radroots_event::id::EventId::Error = radroots_event::id::ParseError
+pub fn radroots_event::id::EventId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_event::id::EventId
+pub fn radroots_event::id::EventId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_event::id::EventId
+pub type radroots_event::id::EventId::Err = radroots_event::id::ParseError
+pub fn radroots_event::id::EventId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_event::id::EventId
+pub fn radroots_event::id::EventId::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_event::id::EventId
+pub fn radroots_event::id::EventId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::EventKind(_)
+impl radroots_event::envelope::EventKind
+pub const fn radroots_event::envelope::EventKind::as_u32(self) -> u32
+pub const fn radroots_event::envelope::EventKind::class(self) -> radroots_event::envelope::EventKindClass
+pub const fn radroots_event::envelope::EventKind::new(u32) -> Self
+impl core::convert::From<u32> for radroots_event::envelope::EventKind
+pub fn radroots_event::envelope::EventKind::from(u32) -> Self
+impl serde_core::ser::Serialize for radroots_event::envelope::EventKind
+pub fn radroots_event::envelope::EventKind::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_event::envelope::EventKind
+pub fn radroots_event::envelope::EventKind::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::EventTag(_)
+impl radroots_event::envelope::EventTag
+pub fn radroots_event::envelope::EventTag::as_slice(&self) -> &[alloc::string::String]
+pub fn radroots_event::envelope::EventTag::into_vec(self) -> alloc::vec::Vec<alloc::string::String>
+pub fn radroots_event::envelope::EventTag::new(usize, alloc::vec::Vec<alloc::string::String>) -> core::result::Result<Self, radroots_event::envelope::EventEnvelopeError>
+pub fn radroots_event::envelope::EventTag::new_with_limits(usize, alloc::vec::Vec<alloc::string::String>, radroots_event::envelope::EventEnvelopeLimits) -> core::result::Result<Self, radroots_event::envelope::EventEnvelopeError>
+impl serde_core::ser::Serialize for radroots_event::envelope::EventTag
+pub fn radroots_event::envelope::EventTag::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_event::envelope::EventTag
+pub fn radroots_event::envelope::EventTag::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::GenericEventDraft
+impl radroots_event::generic_draft::GenericEventDraft
+pub fn radroots_event::generic_draft::GenericEventDraft::content(&self) -> &str
+pub const fn radroots_event::generic_draft::GenericEventDraft::contract(&self) -> &radroots_event::contract::ContractKey
+pub fn radroots_event::generic_draft::GenericEventDraft::contract_id(&self) -> &str
+pub const fn radroots_event::generic_draft::GenericEventDraft::created_at(&self) -> radroots_event::envelope::EventTimestamp
+pub const fn radroots_event::generic_draft::GenericEventDraft::created_at_u64(&self) -> u64
+pub const fn radroots_event::generic_draft::GenericEventDraft::expected_event_id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event::generic_draft::GenericEventDraft::expected_event_id_hex(&self) -> alloc::string::String
+pub const fn radroots_event::generic_draft::GenericEventDraft::expected_pubkey(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_event::generic_draft::GenericEventDraft::kind(&self) -> radroots_event::envelope::EventKind
+pub const fn radroots_event::generic_draft::GenericEventDraft::kind_u32(&self) -> u32
+pub fn radroots_event::generic_draft::GenericEventDraft::new(impl core::convert::Into<alloc::string::String>, u32, u64, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, impl core::convert::Into<alloc::string::String>, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::draft::DraftError>
+pub fn radroots_event::generic_draft::GenericEventDraft::nip01_preimage(&self) -> core::result::Result<alloc::string::String, radroots_event::draft::DraftError>
+pub const fn radroots_event::generic_draft::GenericEventDraft::tags(&self) -> &radroots_event::envelope::EventTags
+pub fn radroots_event::generic_draft::GenericEventDraft::tags_as_vec(&self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event::generic_draft::GenericEventDraft::validate_for_authoring(&self) -> core::result::Result<(), radroots_event::draft::DraftError>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_event::generic_draft::GenericEventDraft
+pub fn radroots_event::generic_draft::GenericEventDraft::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::SignedEvent
+impl radroots_event::draft::SignedEvent
+pub fn radroots_event::draft::SignedEvent::content(&self) -> &str
+pub fn radroots_event::draft::SignedEvent::created_at(&self) -> u64
+pub fn radroots_event::draft::SignedEvent::envelope(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event::draft::SignedEvent::from_wire_verified_id(Nip01EventWire, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_event::draft::SignedEventError>
+pub fn radroots_event::draft::SignedEvent::id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event::draft::SignedEvent::id_hex(&self) -> alloc::string::String
+pub fn radroots_event::draft::SignedEvent::id_str(&self) -> &str
+pub fn radroots_event::draft::SignedEvent::kind(&self) -> u32
+pub fn radroots_event::draft::SignedEvent::new(radroots_event::draft::SignedEventParts) -> core::result::Result<Self, radroots_event::draft::SignedEventError>
+pub fn radroots_event::draft::SignedEvent::pubkey(&self) -> &radroots_identity::key::PublicKey
+pub fn radroots_event::draft::SignedEvent::raw_json(&self) -> &str
+pub fn radroots_event::draft::SignedEvent::sig(&self) -> &radroots_event::id::EventSignature
+pub fn radroots_event::draft::SignedEvent::sig_str(&self) -> &str
+pub fn radroots_event::draft::SignedEvent::signature_hex(&self) -> alloc::string::String
+pub fn radroots_event::draft::SignedEvent::tags_as_vec(&self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event::draft::SignedEvent::wire(&self) -> &Nip01EventWire
+impl serde_core::ser::Serialize for radroots_event::draft::SignedEvent
+pub fn radroots_event::draft::SignedEvent::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_event::draft::SignedEvent
+pub fn radroots_event::draft::SignedEvent::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_event::VerifiedEvent(_)
+impl radroots_event::VerifiedEvent
+pub const fn radroots_event::VerifiedEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event::VerifiedEvent::into_event(self) -> radroots_event::envelope::EventEnvelope
+pub fn radroots_event::VerifiedEvent::validate_contract(self) -> core::result::Result<radroots_event::admission::ContractValidatedEvent, radroots_event::Error>
diff --git a/contracts/api_baselines/radroots_event_codec.txt b/contracts/api_baselines/radroots_event_codec.txt
@@ -0,0 +1,1459 @@
+pub mod radroots_event_codec
+pub use radroots_event_codec::VerificationError
+pub mod radroots_event_codec::admission
+pub use radroots_event_codec::admission::RadrootsRegistryV7AdmissionDecision
+pub use radroots_event_codec::admission::admit_verified_event_registry_v7
+pub mod radroots_event_codec::admission::comment
+#[non_exhaustive] pub enum radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError
+pub radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError::Nip01Verification(crate::verification::RadrootsNip01VerificationError)
+pub radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError::Projection(crate::comment::inbound::RadrootsNip22CommentProjectionError)
+impl radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError
+pub const fn radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError
+pub fn radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError
+pub fn radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event_codec::admission::comment::RadrootsAdmittedNip22CommentEvent
+impl radroots_event_codec::admission::comment::RadrootsAdmittedNip22CommentEvent
+pub fn radroots_event_codec::admission::comment::RadrootsAdmittedNip22CommentEvent::contract(&self) -> &'static radroots_event::contract::registry_v7::EventContract
+pub fn radroots_event_codec::admission::comment::RadrootsAdmittedNip22CommentEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event_codec::admission::comment::RadrootsAdmittedNip22CommentEvent::into_parts(self) -> (RadrootsSignatureVerifiedEvent, RadrootsInboundNip22CommentProjection)
+pub const fn radroots_event_codec::admission::comment::RadrootsAdmittedNip22CommentEvent::projection(&self) -> &RadrootsInboundNip22CommentProjection
+pub fn radroots_event_codec::admission::comment::RadrootsAdmittedNip22CommentEvent::verified_event(&self) -> &RadrootsSignatureVerifiedEvent
+pub fn radroots_event_codec::admission::comment::admit_verified_nip22_comment_event(crate::verification::RadrootsSignatureVerifiedEvent) -> core::result::Result<radroots_event_codec::admission::comment::RadrootsAdmittedNip22CommentEvent, radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError>
+pub fn radroots_event_codec::admission::comment::verify_and_admit_nip22_comment_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::admission::comment::RadrootsAdmittedNip22CommentEvent, radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError>
+pub mod radroots_event_codec::admission::deletion
+pub mod radroots_event_codec::admission::deletion::reconciliation_v1
+pub mod radroots_event_codec::admission::food_availability
+#[non_exhaustive] pub enum radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError
+pub radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError::Nip01Verification(crate::verification::RadrootsNip01VerificationError)
+pub radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError::Projection(crate::food_availability::inbound::RadrootsFoodAvailabilityProjectionError)
+impl radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError
+pub const fn radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError
+pub fn radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError
+pub fn radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub enum radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionOutcome
+pub radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionOutcome::Admitted(alloc::boxed::Box<radroots_event_codec::admission::food_availability::RadrootsAdmittedFoodAvailabilityEvent>)
+pub radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionOutcome::Excluded(radroots_event_codec::admission::food_availability::RadrootsExcludedClassifiedListingCandidate)
+#[non_exhaustive] pub enum radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError
+pub radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError::CoordinateChanged
+pub radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError::CurrentInvalid(crate::food_availability::inbound::RadrootsFoodAvailabilityProjectionError)
+pub radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError::NotNewer
+pub radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError::PreviousInvalid(crate::food_availability::inbound::RadrootsFoodAvailabilityProjectionError)
+pub radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError::PublishedAtChanged
+impl radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError
+pub const fn radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError
+pub fn radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError
+pub fn radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event_codec::admission::food_availability::RadrootsAdmittedFoodAvailabilityEvent
+impl radroots_event_codec::admission::food_availability::RadrootsAdmittedFoodAvailabilityEvent
+pub fn radroots_event_codec::admission::food_availability::RadrootsAdmittedFoodAvailabilityEvent::contract(&self) -> &'static radroots_event::contract::registry_v7::EventContract
+pub fn radroots_event_codec::admission::food_availability::RadrootsAdmittedFoodAvailabilityEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event_codec::admission::food_availability::RadrootsAdmittedFoodAvailabilityEvent::into_parts(self) -> (RadrootsSignatureVerifiedEvent, RadrootsInboundFoodAvailabilityProjection)
+pub fn radroots_event_codec::admission::food_availability::RadrootsAdmittedFoodAvailabilityEvent::projection(&self) -> &RadrootsInboundFoodAvailabilityProjection
+pub fn radroots_event_codec::admission::food_availability::RadrootsAdmittedFoodAvailabilityEvent::verified_event(&self) -> &RadrootsSignatureVerifiedEvent
+pub struct radroots_event_codec::admission::food_availability::RadrootsExcludedClassifiedListingCandidate
+impl radroots_event_codec::admission::food_availability::RadrootsExcludedClassifiedListingCandidate
+pub fn radroots_event_codec::admission::food_availability::RadrootsExcludedClassifiedListingCandidate::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event_codec::admission::food_availability::RadrootsExcludedClassifiedListingCandidate::into_parts(self) -> (RadrootsSignatureVerifiedEvent, radroots_event::listing::classified::ClassifiedListingPartition)
+pub const fn radroots_event_codec::admission::food_availability::RadrootsExcludedClassifiedListingCandidate::partition(&self) -> radroots_event::listing::classified::ClassifiedListingPartition
+pub fn radroots_event_codec::admission::food_availability::RadrootsExcludedClassifiedListingCandidate::verified_event(&self) -> &RadrootsSignatureVerifiedEvent
+pub fn radroots_event_codec::admission::food_availability::admit_verified_food_availability_event(crate::verification::RadrootsSignatureVerifiedEvent) -> core::result::Result<radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionOutcome, radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError>
+pub fn radroots_event_codec::admission::food_availability::validate_food_availability_revision(&crate::verification::RadrootsSignatureVerifiedEvent, &crate::verification::RadrootsSignatureVerifiedEvent) -> core::result::Result<(), radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityRevisionError>
+pub fn radroots_event_codec::admission::food_availability::verify_and_admit_food_availability_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionOutcome, radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError>
+pub mod radroots_event_codec::admission::post
+#[non_exhaustive] pub enum radroots_event_codec::admission::post::RadrootsPostAdmissionError
+pub radroots_event_codec::admission::post::RadrootsPostAdmissionError::Nip01Verification(crate::verification::RadrootsNip01VerificationError)
+pub radroots_event_codec::admission::post::RadrootsPostAdmissionError::Projection(crate::post::inbound::RadrootsPostProjectionError)
+impl radroots_event_codec::admission::post::RadrootsPostAdmissionError
+pub const fn radroots_event_codec::admission::post::RadrootsPostAdmissionError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::admission::post::RadrootsPostAdmissionError
+pub fn radroots_event_codec::admission::post::RadrootsPostAdmissionError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::admission::post::RadrootsPostAdmissionError
+pub fn radroots_event_codec::admission::post::RadrootsPostAdmissionError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub enum radroots_event_codec::admission::post::RadrootsPostAdmissionOutcome
+pub radroots_event_codec::admission::post::RadrootsPostAdmissionOutcome::Root(radroots_event_codec::admission::post::RadrootsAdmittedRootPostEvent)
+pub radroots_event_codec::admission::post::RadrootsPostAdmissionOutcome::ThreadExcluded(radroots_event_codec::admission::post::RadrootsThreadExcludedPostCandidate)
+pub struct radroots_event_codec::admission::post::RadrootsAdmittedRootPostEvent
+impl radroots_event_codec::admission::post::RadrootsAdmittedRootPostEvent
+pub fn radroots_event_codec::admission::post::RadrootsAdmittedRootPostEvent::contract(&self) -> &'static radroots_event::contract::registry_v7::EventContract
+pub fn radroots_event_codec::admission::post::RadrootsAdmittedRootPostEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event_codec::admission::post::RadrootsAdmittedRootPostEvent::into_parts(self) -> (RadrootsSignatureVerifiedEvent, RadrootsInboundPostProjection)
+pub fn radroots_event_codec::admission::post::RadrootsAdmittedRootPostEvent::projection(&self) -> &RadrootsInboundPostProjection
+pub fn radroots_event_codec::admission::post::RadrootsAdmittedRootPostEvent::verified_event(&self) -> &RadrootsSignatureVerifiedEvent
+pub struct radroots_event_codec::admission::post::RadrootsThreadExcludedPostCandidate
+impl radroots_event_codec::admission::post::RadrootsThreadExcludedPostCandidate
+pub fn radroots_event_codec::admission::post::RadrootsThreadExcludedPostCandidate::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event_codec::admission::post::RadrootsThreadExcludedPostCandidate::into_parts(self) -> (RadrootsSignatureVerifiedEvent, RadrootsInboundPostProjection)
+pub fn radroots_event_codec::admission::post::RadrootsThreadExcludedPostCandidate::projection(&self) -> &RadrootsInboundPostProjection
+pub fn radroots_event_codec::admission::post::RadrootsThreadExcludedPostCandidate::verified_event(&self) -> &RadrootsSignatureVerifiedEvent
+pub fn radroots_event_codec::admission::post::admit_verified_post_event(crate::verification::RadrootsSignatureVerifiedEvent) -> core::result::Result<radroots_event_codec::admission::post::RadrootsPostAdmissionOutcome, radroots_event_codec::admission::post::RadrootsPostAdmissionError>
+pub fn radroots_event_codec::admission::post::verify_and_admit_post_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::admission::post::RadrootsPostAdmissionOutcome, radroots_event_codec::admission::post::RadrootsPostAdmissionError>
+pub mod radroots_event_codec::admission::profile
+#[non_exhaustive] pub enum radroots_event_codec::admission::profile::RadrootsProfileAdmissionError
+pub radroots_event_codec::admission::profile::RadrootsProfileAdmissionError::InvalidKind
+pub radroots_event_codec::admission::profile::RadrootsProfileAdmissionError::InvalidKind::actual: u32
+pub radroots_event_codec::admission::profile::RadrootsProfileAdmissionError::InvalidKind::expected: u32
+pub radroots_event_codec::admission::profile::RadrootsProfileAdmissionError::Metadata(crate::profile::inbound::RadrootsProfileMetadataParseError)
+pub radroots_event_codec::admission::profile::RadrootsProfileAdmissionError::Nip01Verification(crate::verification::RadrootsNip01VerificationError)
+impl radroots_event_codec::admission::profile::RadrootsProfileAdmissionError
+pub const fn radroots_event_codec::admission::profile::RadrootsProfileAdmissionError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::admission::profile::RadrootsProfileAdmissionError
+pub fn radroots_event_codec::admission::profile::RadrootsProfileAdmissionError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::admission::profile::RadrootsProfileAdmissionError
+pub fn radroots_event_codec::admission::profile::RadrootsProfileAdmissionError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event_codec::admission::profile::RadrootsAdmittedProfileEvent
+impl radroots_event_codec::admission::profile::RadrootsAdmittedProfileEvent
+pub fn radroots_event_codec::admission::profile::RadrootsAdmittedProfileEvent::contract(&self) -> &'static radroots_event::contract::registry_v7::EventContract
+pub fn radroots_event_codec::admission::profile::RadrootsAdmittedProfileEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event_codec::admission::profile::RadrootsAdmittedProfileEvent::into_parts(self) -> (RadrootsSignatureVerifiedEvent, RadrootsInboundProfileMetadata)
+pub fn radroots_event_codec::admission::profile::RadrootsAdmittedProfileEvent::metadata(&self) -> &RadrootsInboundProfileMetadata
+pub fn radroots_event_codec::admission::profile::RadrootsAdmittedProfileEvent::verified_event(&self) -> &RadrootsSignatureVerifiedEvent
+pub fn radroots_event_codec::admission::profile::admit_verified_profile_event(crate::verification::RadrootsSignatureVerifiedEvent) -> core::result::Result<radroots_event_codec::admission::profile::RadrootsAdmittedProfileEvent, radroots_event_codec::admission::profile::RadrootsProfileAdmissionError>
+pub fn radroots_event_codec::admission::profile::verify_and_admit_profile_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::admission::profile::RadrootsAdmittedProfileEvent, radroots_event_codec::admission::profile::RadrootsProfileAdmissionError>
+pub mod radroots_event_codec::admission::reply
+#[non_exhaustive] pub enum radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError
+pub radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError::Nip01Verification(crate::verification::RadrootsNip01VerificationError)
+pub radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError::Projection(crate::reply::inbound::RadrootsNip10ReplyProjectionError)
+impl radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError
+pub const fn radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError
+pub fn radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError
+pub fn radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event_codec::admission::reply::RadrootsAdmittedNip10ReplyEvent
+impl radroots_event_codec::admission::reply::RadrootsAdmittedNip10ReplyEvent
+pub fn radroots_event_codec::admission::reply::RadrootsAdmittedNip10ReplyEvent::contract(&self) -> &'static radroots_event::contract::registry_v7::EventContract
+pub fn radroots_event_codec::admission::reply::RadrootsAdmittedNip10ReplyEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event_codec::admission::reply::RadrootsAdmittedNip10ReplyEvent::into_parts(self) -> (RadrootsSignatureVerifiedEvent, RadrootsInboundNip10ReplyProjection)
+pub fn radroots_event_codec::admission::reply::RadrootsAdmittedNip10ReplyEvent::projection(&self) -> &RadrootsInboundNip10ReplyProjection
+pub fn radroots_event_codec::admission::reply::RadrootsAdmittedNip10ReplyEvent::verified_event(&self) -> &RadrootsSignatureVerifiedEvent
+pub fn radroots_event_codec::admission::reply::admit_thread_excluded_post_candidate(radroots_event_codec::admission::post::RadrootsThreadExcludedPostCandidate) -> core::result::Result<radroots_event_codec::admission::reply::RadrootsAdmittedNip10ReplyEvent, radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError>
+pub fn radroots_event_codec::admission::reply::admit_verified_nip10_reply_event(crate::verification::RadrootsSignatureVerifiedEvent) -> core::result::Result<radroots_event_codec::admission::reply::RadrootsAdmittedNip10ReplyEvent, radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError>
+pub fn radroots_event_codec::admission::reply::verify_and_admit_nip10_reply_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::admission::reply::RadrootsAdmittedNip10ReplyEvent, radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError>
+#[non_exhaustive] pub enum radroots_event_codec::admission::RadrootsAdmittedEvent
+pub radroots_event_codec::admission::RadrootsAdmittedEvent::Comment(alloc::boxed::Box<radroots_event_codec::admission::comment::RadrootsAdmittedNip22CommentEvent>)
+pub radroots_event_codec::admission::RadrootsAdmittedEvent::ContractValidated(crate::verification::RadrootsContractValidatedEvent)
+pub radroots_event_codec::admission::RadrootsAdmittedEvent::DeletionRequest(crate::deletion::admission::RadrootsAdmittedNip09DeletionRequestEvent)
+pub radroots_event_codec::admission::RadrootsAdmittedEvent::FoodAvailability(alloc::boxed::Box<radroots_event_codec::admission::food_availability::RadrootsAdmittedFoodAvailabilityEvent>)
+pub radroots_event_codec::admission::RadrootsAdmittedEvent::Profile(radroots_event_codec::admission::profile::RadrootsAdmittedProfileEvent)
+pub radroots_event_codec::admission::RadrootsAdmittedEvent::Reply(radroots_event_codec::admission::reply::RadrootsAdmittedNip10ReplyEvent)
+pub radroots_event_codec::admission::RadrootsAdmittedEvent::RootPost(radroots_event_codec::admission::post::RadrootsAdmittedRootPostEvent)
+impl radroots_event_codec::admission::RadrootsAdmittedEvent
+pub fn radroots_event_codec::admission::RadrootsAdmittedEvent::contract(&self) -> &'static radroots_event::contract::registry_v7::EventContract
+pub fn radroots_event_codec::admission::RadrootsAdmittedEvent::contract_id(&self) -> &'static str
+pub fn radroots_event_codec::admission::RadrootsAdmittedEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub fn radroots_event_codec::admission::RadrootsAdmittedEvent::into_verified_event(self) -> RadrootsSignatureVerifiedEvent
+pub fn radroots_event_codec::admission::RadrootsAdmittedEvent::verified_event(&self) -> &RadrootsSignatureVerifiedEvent
+#[non_exhaustive] pub enum radroots_event_codec::admission::RadrootsEventAdmissionError
+pub radroots_event_codec::admission::RadrootsEventAdmissionError::Comment(radroots_event_codec::admission::comment::RadrootsNip22CommentAdmissionError)
+pub radroots_event_codec::admission::RadrootsEventAdmissionError::ContractMatch(radroots_event::contract::registry_v7::ContractMatchError)
+pub radroots_event_codec::admission::RadrootsEventAdmissionError::ContractValidation(radroots_event::contract::registry_v7::ContractValidationError)
+pub radroots_event_codec::admission::RadrootsEventAdmissionError::DeletionRequest(crate::deletion::admission::RadrootsNip09DeletionAdmissionError)
+pub radroots_event_codec::admission::RadrootsEventAdmissionError::FoodAvailability(radroots_event_codec::admission::food_availability::RadrootsFoodAvailabilityAdmissionError)
+pub radroots_event_codec::admission::RadrootsEventAdmissionError::Post(radroots_event_codec::admission::post::RadrootsPostAdmissionError)
+pub radroots_event_codec::admission::RadrootsEventAdmissionError::Profile(radroots_event_codec::admission::profile::RadrootsProfileAdmissionError)
+pub radroots_event_codec::admission::RadrootsEventAdmissionError::Reply(radroots_event_codec::admission::reply::RadrootsNip10ReplyAdmissionError)
+impl radroots_event_codec::admission::RadrootsEventAdmissionError
+pub const fn radroots_event_codec::admission::RadrootsEventAdmissionError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::admission::RadrootsEventAdmissionError
+pub fn radroots_event_codec::admission::RadrootsEventAdmissionError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::admission::RadrootsEventAdmissionError
+pub fn radroots_event_codec::admission::RadrootsEventAdmissionError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub fn radroots_event_codec::admission::admit_verified_event(crate::verification::RadrootsSignatureVerifiedEvent) -> core::result::Result<radroots_event_codec::admission::RadrootsAdmittedEvent, radroots_event_codec::admission::RadrootsEventAdmissionError>
+pub mod radroots_event_codec::authoring
+#[non_exhaustive] pub enum radroots_event_codec::authoring::AuthoredPlanError
+pub radroots_event_codec::authoring::AuthoredPlanError::Calendar(radroots_event_codec::encode::EventEncodeError)
+pub radroots_event_codec::authoring::AuthoredPlanError::CanonicalEventId(radroots_event::wire::v1::CanonicalEventIdError)
+pub radroots_event_codec::authoring::AuthoredPlanError::ContentTooLarge
+pub radroots_event_codec::authoring::AuthoredPlanError::ContentTooLarge::actual: usize
+pub radroots_event_codec::authoring::AuthoredPlanError::ContentTooLarge::max: usize
+pub radroots_event_codec::authoring::AuthoredPlanError::ContractIdentity(radroots_event::contract::ContractIdentityError)
+pub radroots_event_codec::authoring::AuthoredPlanError::ContractKindMismatch
+pub radroots_event_codec::authoring::AuthoredPlanError::ContractKindMismatch::actual: u32
+pub radroots_event_codec::authoring::AuthoredPlanError::ContractKindMismatch::expected: u32
+pub radroots_event_codec::authoring::AuthoredPlanError::ContractNotTyped
+pub radroots_event_codec::authoring::AuthoredPlanError::ContractNotTyped::contract_id: alloc::string::String
+pub radroots_event_codec::authoring::AuthoredPlanError::Envelope(radroots_event::envelope::EventEnvelopeError)
+pub radroots_event_codec::authoring::AuthoredPlanError::FoodAvailability(radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError)
+pub radroots_event_codec::authoring::AuthoredPlanError::InvalidAuthor(radroots_identity::error::Error)
+pub radroots_event_codec::authoring::AuthoredPlanError::Profile(radroots_event_codec::encode::profile::RadrootsAuthoredProfileEncodeError)
+impl radroots_event_codec::authoring::AuthoredPlanError
+pub const fn radroots_event_codec::authoring::AuthoredPlanError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::authoring::AuthoredPlanError
+impl core::fmt::Display for radroots_event_codec::authoring::AuthoredPlanError
+pub fn radroots_event_codec::authoring::AuthoredPlanError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event_codec::authoring::PlanDecodeError
+pub radroots_event_codec::authoring::PlanDecodeError::ContractIdentity(radroots_event::contract::ContractIdentityError)
+pub radroots_event_codec::authoring::PlanDecodeError::ContractKindMismatch
+pub radroots_event_codec::authoring::PlanDecodeError::ContractKindMismatch::actual: u32
+pub radroots_event_codec::authoring::PlanDecodeError::ContractKindMismatch::expected: u32
+pub radroots_event_codec::authoring::PlanDecodeError::EventIdMismatch
+pub radroots_event_codec::authoring::PlanDecodeError::EventIdMismatch::computed: alloc::string::String
+pub radroots_event_codec::authoring::PlanDecodeError::EventIdMismatch::declared: alloc::string::String
+pub radroots_event_codec::authoring::PlanDecodeError::ExpectedAuthor(alloc::string::String)
+pub radroots_event_codec::authoring::PlanDecodeError::ExpectedEventId(alloc::string::String)
+pub radroots_event_codec::authoring::PlanDecodeError::HistoricalProfileUnavailable
+pub radroots_event_codec::authoring::PlanDecodeError::HistoricalProfileUnavailable::contract_id: alloc::string::String
+pub radroots_event_codec::authoring::PlanDecodeError::HistoricalShape(alloc::string::String)
+pub radroots_event_codec::authoring::PlanDecodeError::Json(alloc::string::String)
+pub radroots_event_codec::authoring::PlanDecodeError::NonCanonicalExpectedAuthor
+pub radroots_event_codec::authoring::PlanDecodeError::NonCanonicalExpectedEventId
+pub radroots_event_codec::authoring::PlanDecodeError::PlanDigest(radroots_event_codec::authoring::PlanDigestError)
+pub radroots_event_codec::authoring::PlanDecodeError::PlanDigestMismatch
+pub radroots_event_codec::authoring::PlanDecodeError::PlanDigestMismatch::computed: alloc::string::String
+pub radroots_event_codec::authoring::PlanDecodeError::PlanDigestMismatch::declared: alloc::string::String
+pub radroots_event_codec::authoring::PlanDecodeError::RawJsonTooLarge
+pub radroots_event_codec::authoring::PlanDecodeError::RawJsonTooLarge::actual: usize
+pub radroots_event_codec::authoring::PlanDecodeError::RawJsonTooLarge::max: usize
+pub radroots_event_codec::authoring::PlanDecodeError::UnsupportedSchemaVersion
+pub radroots_event_codec::authoring::PlanDecodeError::UnsupportedSchemaVersion::actual: u32
+impl core::error::Error for radroots_event_codec::authoring::PlanDecodeError
+impl core::fmt::Display for radroots_event_codec::authoring::PlanDecodeError
+pub fn radroots_event_codec::authoring::PlanDecodeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event_codec::authoring::PlanRegistryRelation
+pub radroots_event_codec::authoring::PlanRegistryRelation::Current
+pub radroots_event_codec::authoring::PlanRegistryRelation::Historical
+pub struct radroots_event_codec::authoring::AuthoredEventBody
+impl radroots_event_codec::authoring::AuthoredEventBody
+pub fn radroots_event_codec::authoring::AuthoredEventBody::content(&self) -> &str
+pub const fn radroots_event_codec::authoring::AuthoredEventBody::contract(&self) -> &radroots_event::contract::ContractKey
+pub const fn radroots_event_codec::authoring::AuthoredEventBody::kind(&self) -> u32
+pub fn radroots_event_codec::authoring::AuthoredEventBody::tags(&self) -> &[alloc::vec::Vec<alloc::string::String>]
+impl radroots_event_codec::authoring::AuthoredEventBody
+pub fn radroots_event_codec::authoring::AuthoredEventBody::from_ask(&radroots_event::post::AuthoredAsk) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventBody::from_calendar_date_event(&radroots_event::calendar::AuthoredCalendarDateEvent) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventBody::from_calendar_time_event(&radroots_event::calendar::AuthoredCalendarTimeEvent) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventBody::from_food_availability(&radroots_event::food::availability::FoodAvailabilityDetails, u64) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventBody::from_nip09_deletion_request(&radroots_event::post::deletion::AuthoredNip09DeletionRequest) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventBody::from_nip10_reply(&radroots_event::post::reply::AuthoredNip10Reply) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventBody::from_nip22_comment(&radroots_event::post::comment::AuthoredNip22Comment) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventBody::from_photo_update(&radroots_event::post::AuthoredPhotoUpdate) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventBody::from_profile(&radroots_event::profile::AuthoredProfile) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventBody::from_update(&radroots_event::post::AuthoredUpdate) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub struct radroots_event_codec::authoring::AuthoredEventPlan
+impl radroots_event_codec::authoring::AuthoredEventPlan
+pub const fn radroots_event_codec::authoring::AuthoredEventPlan::author(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_event_codec::authoring::AuthoredEventPlan::body(&self) -> &radroots_event_codec::authoring::AuthoredEventBody
+pub const fn radroots_event_codec::authoring::AuthoredEventPlan::created_at(&self) -> u64
+pub const fn radroots_event_codec::authoring::AuthoredEventPlan::digest(&self) -> radroots_event_codec::authoring::PlanDigest
+pub const fn radroots_event_codec::authoring::AuthoredEventPlan::expected_event_id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::from_generic(radroots_event::generic_draft::GenericEventDraft) -> core::result::Result<Self, radroots_event::draft::DraftError>
+impl radroots_event_codec::authoring::AuthoredEventPlan
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::bind(radroots_event_codec::authoring::AuthoredEventBody, u64, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::from_ask(&radroots_event::post::AuthoredAsk, u64, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::from_calendar_date_event(&radroots_event::calendar::AuthoredCalendarDateEvent, u64, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::from_calendar_time_event(&radroots_event::calendar::AuthoredCalendarTimeEvent, u64, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::from_food_availability(&radroots_event::food::availability::FoodAvailabilityDetails, u64, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::from_nip09_deletion_request(&radroots_event::post::deletion::AuthoredNip09DeletionRequest, u64, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::from_nip10_reply(&radroots_event::post::reply::AuthoredNip10Reply, u64, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::from_nip22_comment(&radroots_event::post::comment::AuthoredNip22Comment, u64, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::from_photo_update(&radroots_event::post::AuthoredPhotoUpdate, u64, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::from_profile(&radroots_event::profile::AuthoredProfile, u64, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub fn radroots_event_codec::authoring::AuthoredEventPlan::from_update(&radroots_event::post::AuthoredUpdate, u64, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event_codec::authoring::AuthoredPlanError>
+pub struct radroots_event_codec::authoring::BlossomAuthorizationPlan
+impl radroots_event_codec::authoring::BlossomAuthorizationPlan
+pub const fn radroots_event_codec::authoring::BlossomAuthorizationPlan::author(&self) -> &radroots_identity::key::PublicKey
+pub fn radroots_event_codec::authoring::BlossomAuthorizationPlan::content(&self) -> &str
+pub const fn radroots_event_codec::authoring::BlossomAuthorizationPlan::created_at(&self) -> u64
+pub const fn radroots_event_codec::authoring::BlossomAuthorizationPlan::digest(&self) -> radroots_event_codec::authoring::PlanDigest
+pub const fn radroots_event_codec::authoring::BlossomAuthorizationPlan::expected_event_id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event_codec::authoring::BlossomAuthorizationPlan::for_upload(&radroots_blossom::authorization::AuthoredUploadClaim, radroots_identity::key::PublicKey) -> core::result::Result<Self, radroots_event::wire::v1::CanonicalEventIdError>
+pub const fn radroots_event_codec::authoring::BlossomAuthorizationPlan::kind(&self) -> u32
+pub fn radroots_event_codec::authoring::BlossomAuthorizationPlan::tags(&self) -> &[alloc::vec::Vec<alloc::string::String>]
+pub struct radroots_event_codec::authoring::HistoricalPlanIntegrity
+impl radroots_event_codec::authoring::HistoricalPlanIntegrity
+pub fn radroots_event_codec::authoring::HistoricalPlanIntegrity::into_plan(self) -> radroots_event_codec::authoring::AuthoredEventPlan
+pub const fn radroots_event_codec::authoring::HistoricalPlanIntegrity::plan(&self) -> &radroots_event_codec::authoring::AuthoredEventPlan
+pub fn radroots_event_codec::authoring::HistoricalPlanIntegrity::registry_relation(&self, radroots_event::contract::RegistryVersion) -> radroots_event_codec::authoring::PlanRegistryRelation
+pub struct radroots_event_codec::authoring::PlanDigest(_)
+impl radroots_event_codec::authoring::PlanDigest
+pub const radroots_event_codec::authoring::PlanDigest::BYTE_LENGTH: usize
+pub const fn radroots_event_codec::authoring::PlanDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_event_codec::authoring::PlanDigest::from_bytes([u8; 32]) -> Self
+pub fn radroots_event_codec::authoring::PlanDigest::parse_hex(&str) -> core::result::Result<Self, radroots_event_codec::authoring::PlanDigestError>
+pub fn radroots_event_codec::authoring::PlanDigest::to_hex(self) -> alloc::string::String
+pub struct radroots_event_codec::authoring::PlanDigestError
+impl core::error::Error for radroots_event_codec::authoring::PlanDigestError
+impl core::fmt::Display for radroots_event_codec::authoring::PlanDigestError
+pub fn radroots_event_codec::authoring::PlanDigestError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event_codec::authoring::PlanWireV1
+impl radroots_event_codec::authoring::PlanWireV1
+pub fn radroots_event_codec::authoring::PlanWireV1::content(&self) -> &str
+pub const fn radroots_event_codec::authoring::PlanWireV1::contract(&self) -> &radroots_event::contract::ContractKey
+pub const fn radroots_event_codec::authoring::PlanWireV1::created_at(&self) -> u64
+pub const fn radroots_event_codec::authoring::PlanWireV1::expected_author(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_event_codec::authoring::PlanWireV1::expected_event_id(&self) -> &radroots_event::id::EventId
+pub fn radroots_event_codec::authoring::PlanWireV1::from_json(&[u8]) -> core::result::Result<radroots_event_codec::authoring::HistoricalPlanIntegrity, radroots_event_codec::authoring::PlanDecodeError>
+pub fn radroots_event_codec::authoring::PlanWireV1::from_plan(&radroots_event_codec::authoring::AuthoredEventPlan) -> Self
+pub const fn radroots_event_codec::authoring::PlanWireV1::kind(&self) -> u32
+pub const fn radroots_event_codec::authoring::PlanWireV1::plan_digest(&self) -> radroots_event_codec::authoring::PlanDigest
+pub const fn radroots_event_codec::authoring::PlanWireV1::schema_version(&self) -> u32
+pub fn radroots_event_codec::authoring::PlanWireV1::tags(&self) -> &[alloc::vec::Vec<alloc::string::String>]
+pub fn radroots_event_codec::authoring::PlanWireV1::to_json(&self) -> core::result::Result<alloc::vec::Vec<u8>, radroots_event_codec::authoring::PlanDecodeError>
+impl serde_core::ser::Serialize for radroots_event_codec::authoring::PlanWireV1
+pub fn radroots_event_codec::authoring::PlanWireV1::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
+pub const radroots_event_codec::authoring::PLAN_WIRE_MAX_BYTES: usize
+pub const radroots_event_codec::authoring::PLAN_WIRE_VERSION_V1: u32
+pub const radroots_event_codec::authoring::REGISTRY_V7_TYPED_AUTHORING_CONTRACT_IDS: [&str; 10]
+pub mod radroots_event_codec::canonical
+pub fn radroots_event_codec::canonical::id(&radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event::id::EventId, radroots_event_codec::canonical::CanonicalError>
+pub fn radroots_event_codec::canonical::id_preimage(&radroots_event::envelope::EventEnvelope) -> core::result::Result<alloc::string::String, radroots_event_codec::canonical::CanonicalError>
+pub type radroots_event_codec::canonical::CanonicalError = radroots_event::wire::v1::CanonicalEventIdError
+pub mod radroots_event_codec::decode
+pub mod radroots_event_codec::decode::app_data
+pub fn radroots_event_codec::decode::app_data::app_data_from_tags(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::app_data::AppData, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::app_data::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::app_data::AppData>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::app_data::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::app_data::AppData>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::article
+pub fn radroots_event_codec::decode::article::article_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::post::article::Article, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::article::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::post::article::Article>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::article::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::post::article::Article>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::calendar
+pub fn radroots_event_codec::decode::calendar::admit_radroots_calendar(radroots_event::calendar::ParsedNip52Calendar) -> core::result::Result<radroots_event::calendar::AdmittedCalendar, radroots_event::calendar::CalendarAdmissionError>
+pub fn radroots_event_codec::decode::calendar::admit_radroots_calendar_date_event(radroots_event::calendar::ParsedNip52CalendarDateEvent) -> core::result::Result<radroots_event::calendar::AdmittedCalendarDateEvent, radroots_event::calendar::CalendarAdmissionError>
+pub fn radroots_event_codec::decode::calendar::admit_radroots_calendar_event_rsvp(radroots_event::calendar::ParsedNip52CalendarEventRsvp) -> core::result::Result<radroots_event::calendar::AdmittedCalendarEventRsvp, radroots_event::calendar::CalendarAdmissionError>
+pub fn radroots_event_codec::decode::calendar::admit_radroots_calendar_time_event(radroots_event::calendar::ParsedNip52CalendarTimeEvent) -> core::result::Result<radroots_event::calendar::AdmittedCalendarTimeEvent, radroots_event::calendar::CalendarAdmissionError>
+pub fn radroots_event_codec::decode::calendar::nip52_calendar_data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::calendar::ParsedNip52Calendar>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::calendar::nip52_calendar_event_rsvp_data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::calendar::ParsedNip52CalendarEventRsvp>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::calendar::nip52_calendar_event_rsvp_parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::calendar::ParsedNip52CalendarEventRsvp>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::calendar::nip52_calendar_parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::calendar::ParsedNip52Calendar>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::calendar::nip52_date_data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::calendar::ParsedNip52CalendarDateEvent>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::calendar::nip52_date_parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::calendar::ParsedNip52CalendarDateEvent>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::calendar::nip52_time_data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::calendar::ParsedNip52CalendarTimeEvent>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::calendar::nip52_time_parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::calendar::ParsedNip52CalendarTimeEvent>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::calendar::parse_nip52_calendar(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::calendar::ParsedNip52Calendar, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::calendar::parse_nip52_calendar_date_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::calendar::ParsedNip52CalendarDateEvent, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::calendar::parse_nip52_calendar_event_rsvp(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::calendar::ParsedNip52CalendarEventRsvp, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::calendar::parse_nip52_calendar_time_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::calendar::ParsedNip52CalendarTimeEvent, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::comment
+pub mod radroots_event_codec::decode::coop
+pub fn radroots_event_codec::decode::coop::coop_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::farm::coop::Coop, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::coop::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::farm::coop::Coop>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::coop::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::farm::coop::Coop>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::deletion
+pub mod radroots_event_codec::decode::deletion::reconciliation_v1
+pub mod radroots_event_codec::decode::document
+pub fn radroots_event_codec::decode::document::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::post::document::Document>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::document::document_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::post::document::Document, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::document::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::post::document::Document>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::event_ref
+pub fn radroots_event_codec::decode::event_ref::build_event_ref_tag(&str, &radroots_event::tag::EventRef) -> alloc::vec::Vec<alloc::string::String>
+pub fn radroots_event_codec::decode::event_ref::find_event_ref_tag<'a>(&'a [alloc::vec::Vec<alloc::string::String>], &'static str) -> core::option::Option<&'a alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event_codec::decode::event_ref::parse_event_ref_tag(&[alloc::string::String], &'static str) -> core::result::Result<radroots_event::tag::EventRef, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::event_ref::parse_nip10_ref_tags(&[alloc::vec::Vec<alloc::string::String>], &'static str, &'static str, &'static str, &'static str) -> core::result::Result<radroots_event::tag::EventRef, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::event_ref::push_nip10_ref_tags(&mut alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, &radroots_event::tag::EventRef, &'static str, &'static str, &'static str, &'static str)
+pub mod radroots_event_codec::decode::farm
+pub fn radroots_event_codec::decode::farm::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::farm::Farm>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::farm::farm_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::farm::Farm, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::farm::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::farm::Farm>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::farm_crdt
+pub fn radroots_event_codec::decode::farm_crdt::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::farm::crdt::FarmCrdtChange>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::farm_crdt::farm_crdt_change_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::farm::crdt::FarmCrdtChange, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::farm_crdt::farm_crdt_change_from_event_with_author(u32, &[alloc::vec::Vec<alloc::string::String>], &str, &str) -> core::result::Result<radroots_event::farm::crdt::FarmCrdtChange, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::farm_crdt::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::farm::crdt::FarmCrdtChange>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::farm_file
+pub fn radroots_event_codec::decode::farm_file::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::farm::file::FarmFileMetadata>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::farm_file::farm_file_metadata_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::farm::file::FarmFileMetadata, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::farm_file::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::farm::file::FarmFileMetadata>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::farm_workspace
+pub fn radroots_event_codec::decode::farm_workspace::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::farm::workspace::FarmWorkspaceManifest>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::farm_workspace::farm_workspace_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::farm::workspace::FarmWorkspaceManifest, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::farm_workspace::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::farm::workspace::FarmWorkspaceManifest>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::file_metadata
+pub fn radroots_event_codec::decode::file_metadata::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::media::file_metadata::FileMetadata>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::file_metadata::file_metadata_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::media::file_metadata::FileMetadata, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::file_metadata::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::media::file_metadata::FileMetadata>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::follow
+pub fn radroots_event_codec::decode::follow::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::follow::Follow>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::follow::follow_from_tags(u32, &[alloc::vec::Vec<alloc::string::String>], u64) -> core::result::Result<radroots_event::social::follow::Follow, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::follow::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::follow::Follow>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::food_availability
+pub mod radroots_event_codec::decode::geochat
+pub fn radroots_event_codec::decode::geochat::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::geochat::GeoChat>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::geochat::geochat_from_tags(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::geochat::GeoChat, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::geochat::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::geochat::GeoChat>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::gift_wrap
+pub fn radroots_event_codec::decode::gift_wrap::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::gift_wrap::GiftWrap>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::gift_wrap::gift_wrap_from_tags(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::gift_wrap::GiftWrap, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::gift_wrap::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::gift_wrap::GiftWrap>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::group
+pub fn radroots_event_codec::decode::group::group_admins_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupAdmins, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_create_group_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupCreateGroup, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_create_invite_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupCreateInvite, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_delete_event_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupDeleteEvent, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_delete_group_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupDeleteGroup, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_edit_metadata_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupEditMetadata, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_join_request_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupJoinRequest, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_leave_request_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupLeaveRequest, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_members_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupMembers, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_metadata_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupMetadata, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_put_user_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupPutUser, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_remove_user_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupRemoveUser, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::group::group_roles_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::group::GroupRoles, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::http_auth
+pub fn radroots_event_codec::decode::http_auth::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::http_auth::HttpAuth>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::http_auth::http_auth_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::http_auth::HttpAuth, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::http_auth::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::http_auth::HttpAuth>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::job
+pub mod radroots_event_codec::decode::job::feedback
+pub fn radroots_event_codec::decode::job::feedback::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_feedback::JobFeedback>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::feedback::job_feedback_from_tags(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::job_feedback::JobFeedback, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::feedback::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_feedback::JobFeedback>, radroots_event_codec::decode::job::JobParseError>
+pub mod radroots_event_codec::decode::job::request
+pub fn radroots_event_codec::decode::job::request::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_request::JobRequest>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::request::job_request_from_tags(u32, &[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<radroots_event::social::job_request::JobRequest, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::request::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_request::JobRequest>, radroots_event_codec::decode::job::JobParseError>
+pub mod radroots_event_codec::decode::job::result
+pub fn radroots_event_codec::decode::job::result::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_result::JobResult>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::result::job_result_from_tags(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::job_result::JobResult, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::result::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_result::JobResult>, radroots_event_codec::decode::job::JobParseError>
+pub enum radroots_event_codec::decode::job::JobParseError
+pub radroots_event_codec::decode::job::JobParseError::AmountOverflow(&'static str)
+pub radroots_event_codec::decode::job::JobParseError::InvalidNumber(&'static str, core::num::error::ParseIntError)
+pub radroots_event_codec::decode::job::JobParseError::InvalidTag(&'static str)
+pub radroots_event_codec::decode::job::JobParseError::KindOutOfRange(u32)
+pub radroots_event_codec::decode::job::JobParseError::MissingChainTag(&'static str)
+pub radroots_event_codec::decode::job::JobParseError::MissingTag(&'static str)
+pub radroots_event_codec::decode::job::JobParseError::NonWholeSats(&'static str)
+impl core::error::Error for radroots_event_codec::decode::job::JobParseError
+pub fn radroots_event_codec::decode::job::JobParseError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::decode::job::JobParseError
+pub fn radroots_event_codec::decode::job::JobParseError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E: radroots_event_codec::decode::job::JobEventBorrow<'a>>
+impl<'a, E: radroots_event_codec::decode::job::JobEventBorrow<'a>> radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::new(&'a E, u64, &'a [alloc::vec::Vec<alloc::string::String>], impl core::convert::Into<alloc::string::String>) -> Self
+impl<'a, E: radroots_event_codec::decode::job::JobEventBorrow<'a>> radroots_event_codec::decode::job::JobEventLike for radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_author(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_content(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_id(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_kind(&self) -> u32
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_published_at(&self) -> u64
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_sig(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_tags(&self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_feedback_event_index(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_feedback::JobFeedback>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_feedback_metadata(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_feedback::JobFeedback>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_request_event_index(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_request::JobRequest>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_request_metadata(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_request::JobRequest>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_result_event_index(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_result::JobResult>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_result_metadata(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_result::JobResult>, radroots_event_codec::decode::job::JobParseError>
+pub trait radroots_event_codec::decode::job::JobEventBorrow<'a>
+pub fn radroots_event_codec::decode::job::JobEventBorrow::raw_author(&'a self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::JobEventBorrow::raw_content(&'a self) -> &'a str
+pub fn radroots_event_codec::decode::job::JobEventBorrow::raw_id(&'a self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::JobEventBorrow::raw_kind(&'a self) -> u32
+impl<'a> radroots_event_codec::decode::job::JobEventBorrow<'a> for radroots_event::envelope::EventEnvelope
+pub fn radroots_event::envelope::EventEnvelope::raw_author(&'a self) -> alloc::string::String
+pub fn radroots_event::envelope::EventEnvelope::raw_content(&'a self) -> &'a str
+pub fn radroots_event::envelope::EventEnvelope::raw_id(&'a self) -> alloc::string::String
+pub fn radroots_event::envelope::EventEnvelope::raw_kind(&'a self) -> u32
+pub trait radroots_event_codec::decode::job::JobEventLike
+pub fn radroots_event_codec::decode::job::JobEventLike::raw_author(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::JobEventLike::raw_content(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::JobEventLike::raw_id(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::JobEventLike::raw_kind(&self) -> u32
+pub fn radroots_event_codec::decode::job::JobEventLike::raw_published_at(&self) -> u64
+pub fn radroots_event_codec::decode::job::JobEventLike::raw_sig(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::JobEventLike::raw_tags(&self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event_codec::decode::job::JobEventLike::to_job_feedback_event_index(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_feedback::JobFeedback>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::JobEventLike::to_job_feedback_metadata(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_feedback::JobFeedback>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::JobEventLike::to_job_request_event_index(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_request::JobRequest>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::JobEventLike::to_job_request_metadata(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_request::JobRequest>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::JobEventLike::to_job_result_event_index(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_result::JobResult>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::JobEventLike::to_job_result_metadata(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_result::JobResult>, radroots_event_codec::decode::job::JobParseError>
+impl<'a, E: radroots_event_codec::decode::job::JobEventBorrow<'a>> radroots_event_codec::decode::job::JobEventLike for radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_author(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_content(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_id(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_kind(&self) -> u32
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_published_at(&self) -> u64
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_sig(&self) -> alloc::string::String
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::raw_tags(&self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_feedback_event_index(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_feedback::JobFeedback>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_feedback_metadata(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_feedback::JobFeedback>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_request_event_index(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_request::JobRequest>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_request_metadata(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_request::JobRequest>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_result_event_index(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::job_result::JobResult>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::BorrowedEventAdapter<'a, E>::to_job_result_metadata(&self) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::job_result::JobResult>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::feedback_status_from_tag(&str) -> core::option::Option<radroots_event::social::job::JobFeedbackStatus>
+pub fn radroots_event_codec::decode::job::feedback_status_tag(radroots_event::social::job::JobFeedbackStatus) -> &'static str
+pub fn radroots_event_codec::decode::job::job_input_type_from_tag(&str) -> core::option::Option<radroots_event::social::job::JobInputType>
+pub fn radroots_event_codec::decode::job::job_input_type_tag(radroots_event::social::job::JobInputType) -> &'static str
+pub fn radroots_event_codec::decode::job::parse_amount_tag_sat(&[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<core::option::Option<(u32, core::option::Option<alloc::string::String>)>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::parse_bid_tag_sat(&[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<core::option::Option<u32>, radroots_event_codec::decode::job::JobParseError>
+pub fn radroots_event_codec::decode::job::parse_bool_encrypted(&[alloc::vec::Vec<alloc::string::String>]) -> bool
+pub fn radroots_event_codec::decode::job::parse_i_tags(&[alloc::vec::Vec<alloc::string::String>]) -> alloc::vec::Vec<radroots_event::social::job_request::JobInput>
+pub fn radroots_event_codec::decode::job::parse_params(&[alloc::vec::Vec<alloc::string::String>]) -> alloc::vec::Vec<radroots_event::social::job_request::JobParam>
+pub fn radroots_event_codec::decode::job::push_amount_tag_msat(&mut alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, u32, core::option::Option<alloc::string::String>)
+pub fn radroots_event_codec::decode::job::push_bid_tag_sat(&mut alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, u32)
+pub mod radroots_event_codec::decode::knowledge
+pub fn radroots_event_codec::decode::knowledge::contribution_attestation_from_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::ContributionAttestation>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::knowledge::evidence_bounty_from_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::EvidenceBounty>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::knowledge::knowledge_change_proposal_from_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeChangeProposal>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::knowledge::knowledge_claim_from_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeClaim>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::knowledge::knowledge_field_report_from_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeFieldReport>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::knowledge::knowledge_relation_from_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeRelation>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::knowledge::knowledge_review_from_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeReview>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::knowledge::knowledge_source_from_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeSource>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::knowledge::wiki_article_from_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::WikiArticle>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::knowledge::wiki_merge_request_from_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::WikiMergeRequest>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::knowledge::wiki_redirect_from_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::WikiRedirect>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::list
+pub fn radroots_event_codec::decode::list::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::list::List>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::list::list_entries_from_tags(&[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<alloc::vec::Vec<radroots_event::social::list::ListEntry>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::list::list_from_tags(u32, alloc::string::String, &[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<radroots_event::social::list::List, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::list::list_private_entries_from_json(&str) -> core::result::Result<alloc::vec::Vec<radroots_event::social::list::ListEntry>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::list::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::list::List>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::list_set
+pub fn radroots_event_codec::decode::list_set::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::list_set::ListSet>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::list_set::list_set_from_tags(u32, alloc::string::String, &[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::list_set::list_set_private_entries_from_json(&str) -> core::result::Result<alloc::vec::Vec<radroots_event::social::list::ListEntry>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::list_set::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::list_set::ListSet>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::message
+pub fn radroots_event_codec::decode::message::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::message::Message>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::message::message_from_tags(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::message::Message, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::message::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::message::Message>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::message_file
+pub fn radroots_event_codec::decode::message_file::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::message_file::MessageFile>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::message_file::message_file_from_tags(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::message_file::MessageFile, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::message_file::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::message_file::MessageFile>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::operational_listing
+pub fn radroots_event_codec::decode::operational_listing::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::listing::operational::OperationalListing>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::operational_listing::data_from_nostr_event(&radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::listing::operational::OperationalListing>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::operational_listing::operational_listing_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::listing::operational::OperationalListing, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::operational_listing::operational_listing_from_event_parts(&[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::listing::operational::OperationalListing, radroots_event::listing::operational::OperationalListingParseError>
+pub fn radroots_event_codec::decode::operational_listing::operational_listing_from_nostr_event(&radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event::listing::operational::OperationalListing, radroots_event::listing::operational::OperationalListingParseError>
+pub fn radroots_event_codec::decode::operational_listing::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::listing::operational::OperationalListing>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::operational_listing::parsed_from_nostr_event(&radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::listing::operational::OperationalListing>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::order
+pub enum radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::AuthorMismatch
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::CounterpartyTagMismatch
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::InvalidEnvelope(radroots_event::trade::order::OrderEnvelopeError)
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::InvalidJson
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::InvalidKind(u32)
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::InvalidListingAddr(radroots_event::id::ParseError)
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::InvalidPayload(radroots_event::trade::order::OrderPayloadError)
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::InvalidTag(&'static str)
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::ListingAddrTagMismatch
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::MessageTypeKindMismatch
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::MessageTypeKindMismatch::event_kind: u32
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::MessageTypeKindMismatch::message_type: radroots_event::trade::order::OrderEventType
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::MissingTag(&'static str)
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::OrderIdTagMismatch
+pub radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::PayloadBindingMismatch(&'static str)
+impl core::error::Error for radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError
+pub fn radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError
+pub fn radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event_codec::decode::order::RadrootsOrderEventContext
+pub radroots_event_codec::decode::order::RadrootsOrderEventContext::counterparty_pubkey: radroots_identity::key::PublicKey
+pub radroots_event_codec::decode::order::RadrootsOrderEventContext::listing_event: core::option::Option<radroots_event::tag::EventPtr>
+pub radroots_event_codec::decode::order::RadrootsOrderEventContext::prev_event_id: core::option::Option<radroots_event::id::EventId>
+pub radroots_event_codec::decode::order::RadrootsOrderEventContext::root_event_id: core::option::Option<radroots_event::id::EventId>
+pub fn radroots_event_codec::decode::order::order_cancellation_from_event(&radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event::trade::order::OrderEnvelope<radroots_event::trade::order::OrderCancellation>, radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError>
+pub fn radroots_event_codec::decode::order::order_decision_from_event(&radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event::trade::order::OrderEnvelope<radroots_event::trade::order::OrderDecision>, radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError>
+pub fn radroots_event_codec::decode::order::order_envelope_from_event<T: serde_core::de::DeserializeOwned>(&radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event::trade::order::OrderEnvelope<T>, radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError>
+pub fn radroots_event_codec::decode::order::order_event_context_from_tags(radroots_event::trade::order::OrderEventType, &[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<radroots_event_codec::decode::order::RadrootsOrderEventContext, radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError>
+pub fn radroots_event_codec::decode::order::order_request_from_event(&radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event::trade::order::OrderEnvelope<radroots_event::trade::order::OrderRequest>, radroots_event_codec::decode::order::RadrootsOrderEnvelopeParseError>
+pub mod radroots_event_codec::decode::parsed
+pub struct radroots_event_codec::decode::parsed::RadrootsParsedData<T>
+pub radroots_event_codec::decode::parsed::RadrootsParsedData::author: alloc::string::String
+pub radroots_event_codec::decode::parsed::RadrootsParsedData::data: T
+pub radroots_event_codec::decode::parsed::RadrootsParsedData::id: alloc::string::String
+pub radroots_event_codec::decode::parsed::RadrootsParsedData::kind: u32
+pub radroots_event_codec::decode::parsed::RadrootsParsedData::published_at: u64
+impl<T> radroots_event_codec::decode::parsed::RadrootsParsedData<T>
+pub fn radroots_event_codec::decode::parsed::RadrootsParsedData<T>::new(alloc::string::String, alloc::string::String, u64, u32, T) -> Self
+pub struct radroots_event_codec::decode::parsed::RadrootsParsedEvent<T>
+pub radroots_event_codec::decode::parsed::RadrootsParsedEvent::data: radroots_event_codec::decode::parsed::RadrootsParsedData<T>
+pub radroots_event_codec::decode::parsed::RadrootsParsedEvent::event: radroots_event::envelope::EventEnvelope
+impl<T> radroots_event_codec::decode::parsed::RadrootsParsedEvent<T>
+pub fn radroots_event_codec::decode::parsed::RadrootsParsedEvent<T>::from_event_parts(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String, radroots_event_codec::decode::parsed::RadrootsParsedData<T>) -> core::result::Result<Self, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::parsed::RadrootsParsedEvent<T>::from_parts(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String, T) -> core::result::Result<Self, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::parsed::RadrootsParsedEvent<T>::new(radroots_event::envelope::EventEnvelope, radroots_event_codec::decode::parsed::RadrootsParsedData<T>) -> Self
+pub mod radroots_event_codec::decode::plot
+pub fn radroots_event_codec::decode::plot::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::farm::plot::Plot>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::plot::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::farm::plot::Plot>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::plot::plot_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::farm::plot::Plot, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::post
+pub mod radroots_event_codec::decode::profile
+pub mod radroots_event_codec::decode::reaction
+pub fn radroots_event_codec::decode::reaction::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::post::reaction::Reaction>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::reaction::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::post::reaction::Reaction>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::reaction::reaction_from_tags(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::post::reaction::Reaction, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::relay_auth
+pub fn radroots_event_codec::decode::relay_auth::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::relay_auth::RelayAuth>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::relay_auth::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::relay_auth::RelayAuth>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::relay_auth::relay_auth_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::relay_auth::RelayAuth, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::relay_document
+pub fn radroots_event_codec::decode::relay_document::from_json(&str) -> core::result::Result<radroots_event::social::relay_document::RelayDocument, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::reply
+pub mod radroots_event_codec::decode::report
+pub fn radroots_event_codec::decode::report::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::post::report::Report>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::report::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::post::report::Report>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::report::report_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::post::report::Report, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::repost
+pub fn radroots_event_codec::decode::repost::generic_repost_data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::post::repost::GenericRepost>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::repost::generic_repost_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::post::repost::GenericRepost, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::repost::generic_repost_parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::post::repost::GenericRepost>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::repost::repost_data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::post::repost::Repost>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::repost::repost_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::post::repost::Repost, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::repost::repost_parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::post::repost::Repost>, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::resource_area
+pub fn radroots_event_codec::decode::resource_area::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::farm::resource_area::ResourceArea>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::resource_area::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::farm::resource_area::ResourceArea>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::resource_area::resource_area_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::farm::resource_area::ResourceArea, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::resource_cap
+pub fn radroots_event_codec::decode::resource_cap::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::farm::resource_cap::ResourceHarvestCap>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::resource_cap::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::farm::resource_cap::ResourceHarvestCap>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::resource_cap::resource_harvest_cap_from_event(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::farm::resource_cap::ResourceHarvestCap, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::seal
+pub fn radroots_event_codec::decode::seal::data_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedData<radroots_event::social::seal::Seal>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::seal::parsed_from_event(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String) -> core::result::Result<radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::social::seal::Seal>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::seal::seal_from_parts(u32, &[alloc::vec::Vec<alloc::string::String>], &str) -> core::result::Result<radroots_event::social::seal::Seal, radroots_event_codec::decode::EventParseError>
+pub mod radroots_event_codec::decode::trade
+pub enum radroots_event_codec::decode::trade::RadrootsTradeMutationParseError
+pub radroots_event_codec::decode::trade::RadrootsTradeMutationParseError::Canonical(radroots_event::trade::TradeProtocolError)
+pub radroots_event_codec::decode::trade::RadrootsTradeMutationParseError::ContractTagMismatch
+pub radroots_event_codec::decode::trade::RadrootsTradeMutationParseError::CounterpartyTagMismatch
+pub radroots_event_codec::decode::trade::RadrootsTradeMutationParseError::InvalidKind(u32)
+pub radroots_event_codec::decode::trade::RadrootsTradeMutationParseError::InvalidTag(&'static str)
+pub radroots_event_codec::decode::trade::RadrootsTradeMutationParseError::KindContractMismatch
+pub radroots_event_codec::decode::trade::RadrootsTradeMutationParseError::MissingTag(&'static str)
+pub radroots_event_codec::decode::trade::RadrootsTradeMutationParseError::ParentTagsMismatch
+pub radroots_event_codec::decode::trade::RadrootsTradeMutationParseError::TradeIdTagMismatch
+impl core::convert::From<radroots_event::trade::TradeProtocolError> for radroots_event_codec::decode::trade::RadrootsTradeMutationParseError
+pub fn radroots_event_codec::decode::trade::RadrootsTradeMutationParseError::from(radroots_event::trade::TradeProtocolError) -> Self
+impl core::error::Error for radroots_event_codec::decode::trade::RadrootsTradeMutationParseError
+impl core::fmt::Display for radroots_event_codec::decode::trade::RadrootsTradeMutationParseError
+pub fn radroots_event_codec::decode::trade::RadrootsTradeMutationParseError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub fn radroots_event_codec::decode::trade::trade_mutation_from_event(&radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event::trade::TradeMutationEnvelopeV1, radroots_event_codec::decode::trade::RadrootsTradeMutationParseError>
+pub mod radroots_event_codec::decode::wire
+pub fn radroots_event_codec::decode::wire::canonicalize_tags(&mut alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>)
+pub fn radroots_event_codec::decode::wire::empty_content() -> alloc::string::String
+#[non_exhaustive] pub enum radroots_event_codec::decode::DecodeError
+pub radroots_event_codec::decode::DecodeError::InputTooLarge
+pub radroots_event_codec::decode::DecodeError::InputTooLarge::actual: usize
+pub radroots_event_codec::decode::DecodeError::InputTooLarge::max: usize
+pub radroots_event_codec::decode::DecodeError::InvalidEnvelope(radroots_event::envelope::EventEnvelopeError)
+pub radroots_event_codec::decode::DecodeError::InvalidJson
+pub radroots_event_codec::decode::DecodeError::InvalidWire(radroots_event::wire::v1::EventWireError)
+impl radroots_event_codec::decode::DecodeError
+pub const fn radroots_event_codec::decode::DecodeError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::decode::DecodeError
+pub fn radroots_event_codec::decode::DecodeError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::decode::DecodeError
+pub fn radroots_event_codec::decode::DecodeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event_codec::decode::EventParseError
+pub radroots_event_codec::decode::EventParseError::DuplicateTag(&'static str)
+pub radroots_event_codec::decode::EventParseError::InvalidEnvelope
+pub radroots_event_codec::decode::EventParseError::InvalidJson(&'static str)
+pub radroots_event_codec::decode::EventParseError::InvalidKind
+pub radroots_event_codec::decode::EventParseError::InvalidKind::expected: &'static str
+pub radroots_event_codec::decode::EventParseError::InvalidKind::got: u32
+pub radroots_event_codec::decode::EventParseError::InvalidNumber(&'static str, core::num::error::ParseIntError)
+pub radroots_event_codec::decode::EventParseError::InvalidTag(&'static str)
+pub radroots_event_codec::decode::EventParseError::MissingTag(&'static str)
+impl radroots_event_codec::decode::EventParseError
+pub const fn radroots_event_codec::decode::EventParseError::code(&self) -> &'static str
+impl core::convert::From<radroots_event::envelope::EventEnvelopeError> for radroots_event_codec::decode::EventParseError
+pub fn radroots_event_codec::decode::EventParseError::from(radroots_event::envelope::EventEnvelopeError) -> Self
+impl core::convert::From<radroots_event_codec::decode::EventParseError> for radroots_event_codec::verify::RadrootsDecodeError
+pub fn radroots_event_codec::verify::RadrootsDecodeError::from(radroots_event_codec::decode::EventParseError) -> Self
+impl core::error::Error for radroots_event_codec::decode::EventParseError
+pub fn radroots_event_codec::decode::EventParseError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::decode::EventParseError
+pub fn radroots_event_codec::decode::EventParseError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event_codec::decode::RadrootsParsedData<T>
+pub radroots_event_codec::decode::RadrootsParsedData::author: alloc::string::String
+pub radroots_event_codec::decode::RadrootsParsedData::data: T
+pub radroots_event_codec::decode::RadrootsParsedData::id: alloc::string::String
+pub radroots_event_codec::decode::RadrootsParsedData::kind: u32
+pub radroots_event_codec::decode::RadrootsParsedData::published_at: u64
+impl<T> radroots_event_codec::decode::parsed::RadrootsParsedData<T>
+pub fn radroots_event_codec::decode::parsed::RadrootsParsedData<T>::new(alloc::string::String, alloc::string::String, u64, u32, T) -> Self
+pub struct radroots_event_codec::decode::RadrootsParsedEvent<T>
+pub radroots_event_codec::decode::RadrootsParsedEvent::data: radroots_event_codec::decode::parsed::RadrootsParsedData<T>
+pub radroots_event_codec::decode::RadrootsParsedEvent::event: radroots_event::envelope::EventEnvelope
+impl<T> radroots_event_codec::decode::parsed::RadrootsParsedEvent<T>
+pub fn radroots_event_codec::decode::parsed::RadrootsParsedEvent<T>::from_event_parts(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String, radroots_event_codec::decode::parsed::RadrootsParsedData<T>) -> core::result::Result<Self, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::parsed::RadrootsParsedEvent<T>::from_parts(alloc::string::String, alloc::string::String, u64, u32, alloc::string::String, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, alloc::string::String, T) -> core::result::Result<Self, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::decode::parsed::RadrootsParsedEvent<T>::new(radroots_event::envelope::EventEnvelope, radroots_event_codec::decode::parsed::RadrootsParsedData<T>) -> Self
+pub const radroots_event_codec::decode::MAX_EVENT_JSON_BYTES: usize
+pub fn radroots_event_codec::decode::event(&str) -> core::result::Result<radroots_event::verification::RawEvent, radroots_event_codec::decode::DecodeError>
+pub fn radroots_event_codec::decode::signed_event(&str) -> core::result::Result<radroots_event::draft::SignedEvent, radroots_event_codec::decode::DecodeError>
+pub mod radroots_event_codec::encode
+pub mod radroots_event_codec::encode::app_data
+pub fn radroots_event_codec::encode::app_data::app_data_build_tags(&radroots_event::social::app_data::AppData) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::app_data::to_wire_parts(&radroots_event::social::app_data::AppData) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::app_data::to_wire_parts_with_kind(&radroots_event::social::app_data::AppData, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::article
+pub fn radroots_event_codec::encode::article::article_build_tags(&radroots_event::post::article::Article) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::article::to_wire_parts(&radroots_event::post::article::Article) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::article::to_wire_parts_with_kind(&radroots_event::post::article::Article, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::calendar
+pub fn radroots_event_codec::encode::calendar::calendar_collection_build_tags(&radroots_event::calendar::AuthoredCalendar) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::calendar::calendar_date_event_build_tags(&radroots_event::calendar::AuthoredCalendarDateEvent) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::calendar::calendar_time_event_build_tags(&radroots_event::calendar::AuthoredCalendarTimeEvent) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::calendar::calendar_to_wire_parts(&radroots_event::calendar::AuthoredCalendar) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::calendar::calendar_to_wire_parts_with_kind(&radroots_event::calendar::AuthoredCalendar, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::calendar::date_to_wire_parts(&radroots_event::calendar::AuthoredCalendarDateEvent) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::calendar::date_to_wire_parts_with_kind(&radroots_event::calendar::AuthoredCalendarDateEvent, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::calendar::rsvp_build_tags(&radroots_event::calendar::AuthoredCalendarEventRsvp) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::calendar::rsvp_to_wire_parts(&radroots_event::calendar::AuthoredCalendarEventRsvp) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::calendar::rsvp_to_wire_parts_with_kind(&radroots_event::calendar::AuthoredCalendarEventRsvp, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::calendar::time_to_wire_parts(&radroots_event::calendar::AuthoredCalendarTimeEvent) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::calendar::time_to_wire_parts_with_kind(&radroots_event::calendar::AuthoredCalendarTimeEvent, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::comment
+pub fn radroots_event_codec::encode::comment::authored_nip22_comment_to_wire_parts(&radroots_event::post::comment::AuthoredNip22Comment) -> radroots_event::wire::v1::Nip01EventWireParts
+pub mod radroots_event_codec::encode::coop
+pub fn radroots_event_codec::encode::coop::coop_admins_list_set<I, S>(&str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::coop::coop_build_tags(&radroots_event::farm::coop::Coop) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::coop::coop_items_list_set<I, S>(&str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::coop::coop_members_farms_list_set<I>(&str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = radroots_event::farm::FarmRef>
+pub fn radroots_event_codec::encode::coop::coop_members_list_set<I, S>(&str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::coop::coop_owners_list_set<I, S>(&str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::coop::coop_ref_tags(&radroots_event::farm::coop::CoopRef) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::coop::member_of_coops_list_set<I, S>(I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::coop::to_wire_parts(&radroots_event::farm::coop::Coop) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::coop::to_wire_parts_with_kind(&radroots_event::farm::coop::Coop, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::deletion
+pub fn radroots_event_codec::encode::deletion::authored_nip09_deletion_request_to_wire_parts(&radroots_event::post::deletion::AuthoredNip09DeletionRequest) -> radroots_event::wire::v1::Nip01EventWireParts
+pub mod radroots_event_codec::encode::document
+pub fn radroots_event_codec::encode::document::document_build_tags(&radroots_event::post::document::Document) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::document::to_wire_parts(&radroots_event::post::document::Document) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::document::to_wire_parts_with_kind(&radroots_event::post::document::Document, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::farm
+pub fn radroots_event_codec::encode::farm::farm_build_tags(&radroots_event::farm::Farm) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm::farm_members_list_set<I, S>(&str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::farm::farm_operational_listings_list_set<I, S>(&str, &str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::farm::farm_operational_listings_list_set_from_listings<'a, I>(&str, &str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = &'a radroots_event::listing::operational::OperationalListing>
+pub fn radroots_event_codec::encode::farm::farm_owners_list_set<I, S>(&str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::farm::farm_plots_list_set<I, S>(&str, &str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::farm::farm_plots_list_set_from_plots<'a, I>(&str, &str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = &'a radroots_event::farm::plot::Plot>
+pub fn radroots_event_codec::encode::farm::farm_ref_tags(&radroots_event::farm::FarmRef) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm::farm_workers_list_set<I, S>(&str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::farm::member_of_farms_list_set<I, S>(I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::farm::to_wire_parts(&radroots_event::farm::Farm) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm::to_wire_parts_with_kind(&radroots_event::farm::Farm, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::farm_crdt
+pub fn radroots_event_codec::encode::farm_crdt::farm_crdt_change_build_tags(&radroots_event::farm::crdt::FarmCrdtChange) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm_crdt::farm_crdt_change_build_tags_with_author(&radroots_event::farm::crdt::FarmCrdtChange, core::option::Option<&str>) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm_crdt::to_wire_parts(&radroots_event::farm::crdt::FarmCrdtChange) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm_crdt::to_wire_parts_with_author(&radroots_event::farm::crdt::FarmCrdtChange, &str) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm_crdt::to_wire_parts_with_kind(&radroots_event::farm::crdt::FarmCrdtChange, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm_crdt::to_wire_parts_with_kind_and_author(&radroots_event::farm::crdt::FarmCrdtChange, u32, core::option::Option<&str>) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::farm_file
+pub fn radroots_event_codec::encode::farm_file::farm_file_metadata_build_tags(&radroots_event::farm::file::FarmFileMetadata) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm_file::to_wire_parts(&radroots_event::farm::file::FarmFileMetadata) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm_file::to_wire_parts_with_kind(&radroots_event::farm::file::FarmFileMetadata, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::farm_workspace
+pub fn radroots_event_codec::encode::farm_workspace::farm_workspace_build_tags(&radroots_event::farm::workspace::FarmWorkspaceManifest) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm_workspace::to_wire_parts(&radroots_event::farm::workspace::FarmWorkspaceManifest) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::farm_workspace::to_wire_parts_with_kind(&radroots_event::farm::workspace::FarmWorkspaceManifest, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::file_metadata
+pub fn radroots_event_codec::encode::file_metadata::file_metadata_build_tags(&radroots_event::media::file_metadata::FileMetadata) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::file_metadata::to_wire_parts(&radroots_event::media::file_metadata::FileMetadata) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::file_metadata::to_wire_parts_with_kind(&radroots_event::media::file_metadata::FileMetadata, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::follow
+pub enum radroots_event_codec::encode::follow::FollowMutation
+pub radroots_event_codec::encode::follow::FollowMutation::Follow
+pub radroots_event_codec::encode::follow::FollowMutation::Follow::contact_name: core::option::Option<alloc::string::String>
+pub radroots_event_codec::encode::follow::FollowMutation::Follow::public_key: alloc::string::String
+pub radroots_event_codec::encode::follow::FollowMutation::Follow::relay_url: core::option::Option<alloc::string::String>
+pub radroots_event_codec::encode::follow::FollowMutation::Toggle
+pub radroots_event_codec::encode::follow::FollowMutation::Toggle::contact_name: core::option::Option<alloc::string::String>
+pub radroots_event_codec::encode::follow::FollowMutation::Toggle::public_key: alloc::string::String
+pub radroots_event_codec::encode::follow::FollowMutation::Toggle::relay_url: core::option::Option<alloc::string::String>
+pub radroots_event_codec::encode::follow::FollowMutation::Unfollow
+pub radroots_event_codec::encode::follow::FollowMutation::Unfollow::public_key: alloc::string::String
+pub fn radroots_event_codec::encode::follow::follow_apply(&radroots_event::social::follow::Follow, radroots_event_codec::encode::follow::FollowMutation) -> core::result::Result<radroots_event::social::follow::Follow, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::follow::follow_build_tags(&radroots_event::social::follow::Follow) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::follow::follow_to_wire_parts_after(&radroots_event::social::follow::Follow, radroots_event_codec::encode::follow::FollowMutation) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::follow::to_wire_parts(&radroots_event::social::follow::Follow) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::follow::to_wire_parts_with_kind(&radroots_event::social::follow::Follow, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::food_availability
+#[non_exhaustive] pub enum radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError
+pub radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError::Domain(radroots_event::food::availability::FoodAvailabilityError)
+pub radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError::EventWireTooLarge
+pub radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError::EventWireTooLarge::actual: usize
+pub radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError::EventWireTooLarge::max: usize
+pub radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError::Wire(radroots_event::envelope::EventEnvelopeError)
+impl radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError
+pub const fn radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError::code(&self) -> &'static str
+impl core::convert::From<radroots_event::envelope::EventEnvelopeError> for radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError
+pub fn radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError::from(radroots_event::envelope::EventEnvelopeError) -> Self
+impl core::convert::From<radroots_event::food::availability::FoodAvailabilityError> for radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError
+pub fn radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError::from(radroots_event::food::availability::FoodAvailabilityError) -> Self
+impl core::error::Error for radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError
+pub fn radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError
+pub fn radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub fn radroots_event_codec::encode::food_availability::authored_food_availability_build_tags(&radroots_event::food::availability::FoodAvailabilityDetails, u64) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError>
+pub fn radroots_event_codec::encode::food_availability::authored_food_availability_to_wire_parts(&radroots_event::food::availability::FoodAvailabilityDetails, u64) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::food_availability::RadrootsFoodAvailabilityEncodeError>
+pub mod radroots_event_codec::encode::geochat
+pub fn radroots_event_codec::encode::geochat::geochat_build_tags(&radroots_event::social::geochat::GeoChat) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::geochat::to_wire_parts(&radroots_event::social::geochat::GeoChat) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::gift_wrap
+pub fn radroots_event_codec::encode::gift_wrap::gift_wrap_build_tags(&radroots_event::social::gift_wrap::GiftWrap) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::gift_wrap::to_wire_parts(&radroots_event::social::gift_wrap::GiftWrap) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::gift_wrap::to_wire_parts_with_kind(&radroots_event::social::gift_wrap::GiftWrap, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::group
+pub fn radroots_event_codec::encode::group::group_admins_build_tags(&radroots_event::social::group::GroupAdmins) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_admins_to_wire_parts(&radroots_event::social::group::GroupAdmins) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_create_group_build_tags(&radroots_event::social::group::GroupCreateGroup) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_create_group_to_wire_parts(&radroots_event::social::group::GroupCreateGroup) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_create_invite_build_tags(&radroots_event::social::group::GroupCreateInvite) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_create_invite_to_wire_parts(&radroots_event::social::group::GroupCreateInvite) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_delete_event_build_tags(&radroots_event::social::group::GroupDeleteEvent) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_delete_event_to_wire_parts(&radroots_event::social::group::GroupDeleteEvent) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_delete_group_build_tags(&radroots_event::social::group::GroupDeleteGroup) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_delete_group_to_wire_parts(&radroots_event::social::group::GroupDeleteGroup) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_edit_metadata_build_tags(&radroots_event::social::group::GroupEditMetadata) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_edit_metadata_to_wire_parts(&radroots_event::social::group::GroupEditMetadata) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_join_request_build_tags(&radroots_event::social::group::GroupJoinRequest) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_join_request_to_wire_parts(&radroots_event::social::group::GroupJoinRequest) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_leave_request_build_tags(&radroots_event::social::group::GroupLeaveRequest) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_leave_request_to_wire_parts(&radroots_event::social::group::GroupLeaveRequest) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_members_build_tags(&radroots_event::social::group::GroupMembers) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_members_to_wire_parts(&radroots_event::social::group::GroupMembers) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_metadata_build_tags(&radroots_event::social::group::GroupMetadata) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_metadata_to_wire_parts(&radroots_event::social::group::GroupMetadata) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_put_user_build_tags(&radroots_event::social::group::GroupPutUser) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_put_user_to_wire_parts(&radroots_event::social::group::GroupPutUser) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_remove_user_build_tags(&radroots_event::social::group::GroupRemoveUser) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_remove_user_to_wire_parts(&radroots_event::social::group::GroupRemoveUser) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_roles_build_tags(&radroots_event::social::group::GroupRoles) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::group::group_roles_to_wire_parts(&radroots_event::social::group::GroupRoles) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::http_auth
+pub fn radroots_event_codec::encode::http_auth::http_auth_build_tags(&radroots_event::social::http_auth::HttpAuth) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::http_auth::to_wire_parts(&radroots_event::social::http_auth::HttpAuth) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::http_auth::to_wire_parts_with_kind(&radroots_event::social::http_auth::HttpAuth, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::job
+pub mod radroots_event_codec::encode::job::feedback
+pub fn radroots_event_codec::encode::job::feedback::job_feedback_build_tags(&radroots_event::social::job_feedback::JobFeedback) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event_codec::encode::job::feedback::to_wire_parts(&radroots_event::social::job_feedback::JobFeedback, &str) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::job::JobEncodeError>
+pub mod radroots_event_codec::encode::job::request
+pub fn radroots_event_codec::encode::job::request::job_request_build_tags(&radroots_event::social::job_request::JobRequest) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event_codec::encode::job::request::to_wire_parts(&radroots_event::social::job_request::JobRequest, &str) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::job::JobEncodeError>
+pub mod radroots_event_codec::encode::job::result
+pub fn radroots_event_codec::encode::job::result::job_result_build_tags(&radroots_event::social::job_result::JobResult) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+pub fn radroots_event_codec::encode::job::result::to_wire_parts(&radroots_event::social::job_result::JobResult, &str) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::job::JobEncodeError>
+pub enum radroots_event_codec::encode::job::JobEncodeError
+pub radroots_event_codec::encode::job::JobEncodeError::EmptyRequiredField(&'static str)
+pub radroots_event_codec::encode::job::JobEncodeError::InvalidKind(u32)
+pub radroots_event_codec::encode::job::JobEncodeError::MissingProvidersForEncrypted
+impl core::error::Error for radroots_event_codec::encode::job::JobEncodeError
+impl core::fmt::Display for radroots_event_codec::encode::job::JobEncodeError
+pub fn radroots_event_codec::encode::job::JobEncodeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub fn radroots_event_codec::encode::job::assert_no_inputs_when_encrypted(&[alloc::vec::Vec<alloc::string::String>]) -> bool
+pub fn radroots_event_codec::encode::job::canonicalize_tags(&mut alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>)
+pub fn radroots_event_codec::encode::job::empty_content() -> alloc::string::String
+pub fn radroots_event_codec::encode::job::json_content<T: serde_core::ser::Serialize>(&T) -> core::result::Result<alloc::string::String, radroots_event_codec::encode::job::JobEncodeError>
+pub fn radroots_event_codec::encode::job::push_provider_tag(&mut alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, &str)
+pub fn radroots_event_codec::encode::job::push_relay_tag(&mut alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, &str)
+pub fn radroots_event_codec::encode::job::push_status_tag(&mut alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, &str, core::option::Option<&str>)
+pub mod radroots_event_codec::encode::knowledge
+pub fn radroots_event_codec::encode::knowledge::contribution_attestation_build_tags(&radroots_event::knowledge::ContributionAttestation) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::contribution_attestation_to_wire_parts(&radroots_event::knowledge::ContributionAttestation) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::evidence_bounty_build_tags(&radroots_event::knowledge::EvidenceBounty) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::evidence_bounty_to_wire_parts(&radroots_event::knowledge::EvidenceBounty) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_change_proposal_build_tags(&radroots_event::knowledge::KnowledgeChangeProposal) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_change_proposal_to_wire_parts(&radroots_event::knowledge::KnowledgeChangeProposal) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_claim_build_tags(&radroots_event::knowledge::KnowledgeClaim) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_claim_to_wire_parts(&radroots_event::knowledge::KnowledgeClaim) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_field_report_build_tags(&radroots_event::knowledge::KnowledgeFieldReport) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_field_report_to_wire_parts(&radroots_event::knowledge::KnowledgeFieldReport) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_relation_build_tags(&radroots_event::knowledge::KnowledgeRelation) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_relation_to_wire_parts(&radroots_event::knowledge::KnowledgeRelation) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_review_build_tags(&radroots_event::knowledge::KnowledgeReview) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_review_to_wire_parts(&radroots_event::knowledge::KnowledgeReview) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_source_build_tags(&radroots_event::knowledge::KnowledgeSource) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::knowledge_source_to_wire_parts(&radroots_event::knowledge::KnowledgeSource) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::wiki_article_build_tags(&radroots_event::knowledge::WikiArticle) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::wiki_article_to_wire_parts(&radroots_event::knowledge::WikiArticle) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::wiki_merge_request_build_tags(&radroots_event::knowledge::WikiMergeRequest) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::wiki_merge_request_to_wire_parts(&radroots_event::knowledge::WikiMergeRequest) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::wiki_redirect_build_tags(&radroots_event::knowledge::WikiRedirect) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::knowledge::wiki_redirect_to_wire_parts(&radroots_event::knowledge::WikiRedirect) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::list
+pub fn radroots_event_codec::encode::list::list_build_tags(&radroots_event::social::list::List) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::list::list_entries_to_tags(&[radroots_event::social::list::ListEntry]) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::list::list_private_entries_json(&[radroots_event::social::list::ListEntry]) -> core::result::Result<alloc::string::String, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::list::to_wire_parts_with_kind(&radroots_event::social::list::List, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::list_set
+pub fn radroots_event_codec::encode::list_set::list_set_build_tags(&radroots_event::social::list_set::ListSet) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::list_set::list_set_private_entries_json(&[radroots_event::social::list::ListEntry]) -> core::result::Result<alloc::string::String, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::list_set::to_wire_parts_with_kind(&radroots_event::social::list_set::ListSet, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::message
+pub fn radroots_event_codec::encode::message::message_build_tags(&radroots_event::social::message::Message) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::message::to_wire_parts(&radroots_event::social::message::Message) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::message_file
+pub fn radroots_event_codec::encode::message_file::message_file_build_tags(&radroots_event::social::message_file::MessageFile) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::message_file::to_wire_parts(&radroots_event::social::message_file::MessageFile) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::message_file::to_wire_parts_with_kind(&radroots_event::social::message_file::MessageFile, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::operational_listing
+pub struct radroots_event_codec::encode::operational_listing::OperationalListingTagOptions
+pub radroots_event_codec::encode::operational_listing::OperationalListingTagOptions::include_availability: bool
+pub radroots_event_codec::encode::operational_listing::OperationalListingTagOptions::include_delivery: bool
+pub radroots_event_codec::encode::operational_listing::OperationalListingTagOptions::include_geohash: bool
+pub radroots_event_codec::encode::operational_listing::OperationalListingTagOptions::include_inventory: bool
+impl radroots_event_codec::encode::operational_listing::OperationalListingTagOptions
+pub fn radroots_event_codec::encode::operational_listing::OperationalListingTagOptions::with_trade_fields() -> Self
+impl core::default::Default for radroots_event_codec::encode::operational_listing::OperationalListingTagOptions
+pub fn radroots_event_codec::encode::operational_listing::OperationalListingTagOptions::default() -> Self
+pub fn radroots_event_codec::encode::operational_listing::operational_listing_build_tags(&radroots_event::listing::operational::OperationalListing) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::operational_listing::operational_listing_tags(&radroots_event::listing::operational::OperationalListing) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::operational_listing::operational_listing_tags_full(&radroots_event::listing::operational::OperationalListing) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::operational_listing::operational_listing_tags_with_options(&radroots_event::listing::operational::OperationalListing, radroots_event_codec::encode::operational_listing::OperationalListingTagOptions) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::operational_listing::to_wire_parts(&radroots_event::listing::operational::OperationalListing) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::operational_listing::to_wire_parts_with_kind(&radroots_event::listing::operational::OperationalListing, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::order
+pub const radroots_event_codec::encode::order::TAG_LISTING_EVENT: &str
+pub fn radroots_event_codec::encode::order::order_cancellation_event_build(&radroots_event::id::EventId, &radroots_event::id::EventId, &radroots_event::trade::order::OrderCancellation) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::order::order_decision_event_build(&radroots_event::id::EventId, &radroots_event::id::EventId, &radroots_event::trade::order::OrderDecision) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::order::order_envelope_tags<P, A, D>(P, A, core::option::Option<D>, core::option::Option<&radroots_event::tag::EventPtr>, core::option::Option<&str>, core::option::Option<&str>) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError> where P: core::convert::Into<alloc::string::String>, A: core::convert::Into<alloc::string::String>, D: core::convert::Into<alloc::string::String>
+pub fn radroots_event_codec::encode::order::order_request_event_build(&radroots_event::tag::EventPtr, &radroots_event::trade::order::OrderRequest) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::order::parse_order_counterparty_tag(&[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<alloc::string::String, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::encode::order::parse_order_listing_event_tag(&[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<core::option::Option<radroots_event::tag::EventPtr>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::encode::order::parse_order_prev_tag(&[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<core::option::Option<alloc::string::String>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::encode::order::parse_order_root_tag(&[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<core::option::Option<alloc::string::String>, radroots_event_codec::decode::EventParseError>
+pub fn radroots_event_codec::encode::order::push_order_chain_tags(&mut alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, impl core::convert::Into<alloc::string::String>, core::option::Option<impl core::convert::Into<alloc::string::String>>, core::option::Option<impl core::convert::Into<alloc::string::String>>)
+pub fn radroots_event_codec::encode::order::validate_order_chain(&[alloc::vec::Vec<alloc::string::String>]) -> core::result::Result<(), radroots_event_codec::decode::job::JobParseError>
+pub mod radroots_event_codec::encode::plot
+pub fn radroots_event_codec::encode::plot::plot_address(&str, &str) -> core::result::Result<alloc::string::String, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::plot::plot_build_tags(&radroots_event::farm::plot::Plot) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::plot::to_wire_parts(&radroots_event::farm::plot::Plot) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::plot::to_wire_parts_with_kind(&radroots_event::farm::plot::Plot, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::post
+pub fn radroots_event_codec::encode::post::authored_ask_to_wire_parts(&radroots_event::post::AuthoredAsk) -> radroots_event::wire::v1::Nip01EventWireParts
+pub fn radroots_event_codec::encode::post::authored_photo_update_to_wire_parts(&radroots_event::post::AuthoredPhotoUpdate) -> radroots_event::wire::v1::Nip01EventWireParts
+pub fn radroots_event_codec::encode::post::authored_update_to_wire_parts(&radroots_event::post::AuthoredUpdate) -> radroots_event::wire::v1::Nip01EventWireParts
+pub mod radroots_event_codec::encode::profile
+#[non_exhaustive] pub enum radroots_event_codec::encode::profile::RadrootsAuthoredProfileEncodeError
+pub radroots_event_codec::encode::profile::RadrootsAuthoredProfileEncodeError::ContentTooLarge
+pub radroots_event_codec::encode::profile::RadrootsAuthoredProfileEncodeError::ContentTooLarge::actual: usize
+pub radroots_event_codec::encode::profile::RadrootsAuthoredProfileEncodeError::ContentTooLarge::max: usize
+impl radroots_event_codec::encode::profile::RadrootsAuthoredProfileEncodeError
+pub const fn radroots_event_codec::encode::profile::RadrootsAuthoredProfileEncodeError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::encode::profile::RadrootsAuthoredProfileEncodeError
+impl core::fmt::Display for radroots_event_codec::encode::profile::RadrootsAuthoredProfileEncodeError
+pub fn radroots_event_codec::encode::profile::RadrootsAuthoredProfileEncodeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub fn radroots_event_codec::encode::profile::authored_profile_to_wire_parts(&radroots_event::profile::AuthoredProfile) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::profile::RadrootsAuthoredProfileEncodeError>
+pub mod radroots_event_codec::encode::reaction
+pub fn radroots_event_codec::encode::reaction::reaction_build_tags(&radroots_event::post::reaction::Reaction) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::reaction::to_wire_parts(&radroots_event::post::reaction::Reaction) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::reaction::to_wire_parts_with_kind(&radroots_event::post::reaction::Reaction, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::relay_auth
+pub fn radroots_event_codec::encode::relay_auth::relay_auth_build_tags(&radroots_event::social::relay_auth::RelayAuth) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::relay_auth::to_wire_parts(&radroots_event::social::relay_auth::RelayAuth) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::relay_auth::to_wire_parts_with_kind(&radroots_event::social::relay_auth::RelayAuth, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::relay_document
+pub fn radroots_event_codec::encode::relay_document::to_json(&radroots_event::social::relay_document::RelayDocument) -> core::result::Result<alloc::string::String, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::reply
+pub fn radroots_event_codec::encode::reply::authored_nip10_reply_to_wire_parts(&radroots_event::post::reply::AuthoredNip10Reply) -> radroots_event::wire::v1::Nip01EventWireParts
+pub mod radroots_event_codec::encode::report
+pub fn radroots_event_codec::encode::report::report_build_tags(&radroots_event::post::report::Report) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::report::to_wire_parts(&radroots_event::post::report::Report) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::report::to_wire_parts_with_kind(&radroots_event::post::report::Report, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::repost
+pub fn radroots_event_codec::encode::repost::generic_repost_build_tags(&radroots_event::post::repost::GenericRepost) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::repost::generic_repost_to_wire_parts(&radroots_event::post::repost::GenericRepost) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::repost::generic_repost_to_wire_parts_with_kind(&radroots_event::post::repost::GenericRepost, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::repost::repost_build_tags(&radroots_event::post::repost::Repost) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::repost::repost_to_wire_parts(&radroots_event::post::repost::Repost) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::repost::repost_to_wire_parts_with_kind(&radroots_event::post::repost::Repost, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::resource_area
+pub fn radroots_event_codec::encode::resource_area::resource_area_build_tags(&radroots_event::farm::resource_area::ResourceArea) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::resource_area::resource_area_members_farms_list_set<I>(&str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = radroots_event::farm::FarmRef>
+pub fn radroots_event_codec::encode::resource_area::resource_area_members_plots_list_set<I>(&str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = radroots_event::farm::plot::PlotRef>
+pub fn radroots_event_codec::encode::resource_area::resource_area_ref_tags(&radroots_event::farm::resource_area::ResourceAreaRef) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::resource_area::resource_area_stewards_list_set<I, S>(&str, I) -> core::result::Result<radroots_event::social::list_set::ListSet, radroots_event_codec::encode::EventEncodeError> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_event_codec::encode::resource_area::to_wire_parts(&radroots_event::farm::resource_area::ResourceArea) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::resource_area::to_wire_parts_with_kind(&radroots_event::farm::resource_area::ResourceArea, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::resource_cap
+pub fn radroots_event_codec::encode::resource_cap::resource_harvest_cap_build_tags(&radroots_event::farm::resource_cap::ResourceHarvestCap) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::resource_cap::to_wire_parts(&radroots_event::farm::resource_cap::ResourceHarvestCap) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::resource_cap::to_wire_parts_with_kind(&radroots_event::farm::resource_cap::ResourceHarvestCap, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::seal
+pub fn radroots_event_codec::encode::seal::seal_build_tags(&radroots_event::social::seal::Seal) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::seal::to_wire_parts(&radroots_event::social::seal::Seal) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::seal::to_wire_parts_with_kind(&radroots_event::social::seal::Seal, u32) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub mod radroots_event_codec::encode::tag_builders
+pub trait radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder
+pub type radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder::Error
+pub fn radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::farm::Farm
+pub type radroots_event::farm::Farm::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::farm::Farm::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::farm::coop::Coop
+pub type radroots_event::farm::coop::Coop::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::farm::coop::Coop::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::farm::plot::Plot
+pub type radroots_event::farm::plot::Plot::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::farm::plot::Plot::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::farm::resource_area::ResourceArea
+pub type radroots_event::farm::resource_area::ResourceArea::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::farm::resource_area::ResourceArea::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::farm::resource_cap::ResourceHarvestCap
+pub type radroots_event::farm::resource_cap::ResourceHarvestCap::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::farm::resource_cap::ResourceHarvestCap::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::knowledge::ContributionAttestation
+pub type radroots_event::knowledge::ContributionAttestation::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::knowledge::ContributionAttestation::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::knowledge::EvidenceBounty
+pub type radroots_event::knowledge::EvidenceBounty::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::knowledge::EvidenceBounty::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::knowledge::KnowledgeChangeProposal
+pub type radroots_event::knowledge::KnowledgeChangeProposal::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::knowledge::KnowledgeChangeProposal::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::knowledge::KnowledgeClaim
+pub type radroots_event::knowledge::KnowledgeClaim::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::knowledge::KnowledgeClaim::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::knowledge::KnowledgeFieldReport
+pub type radroots_event::knowledge::KnowledgeFieldReport::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::knowledge::KnowledgeFieldReport::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::knowledge::KnowledgeRelation
+pub type radroots_event::knowledge::KnowledgeRelation::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::knowledge::KnowledgeRelation::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::knowledge::KnowledgeReview
+pub type radroots_event::knowledge::KnowledgeReview::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::knowledge::KnowledgeReview::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::knowledge::KnowledgeSource
+pub type radroots_event::knowledge::KnowledgeSource::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::knowledge::KnowledgeSource::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::knowledge::WikiArticle
+pub type radroots_event::knowledge::WikiArticle::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::knowledge::WikiArticle::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::knowledge::WikiMergeRequest
+pub type radroots_event::knowledge::WikiMergeRequest::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::knowledge::WikiMergeRequest::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::knowledge::WikiRedirect
+pub type radroots_event::knowledge::WikiRedirect::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::knowledge::WikiRedirect::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::listing::operational::OperationalListing
+pub type radroots_event::listing::operational::OperationalListing::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::listing::operational::OperationalListing::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::post::document::Document
+pub type radroots_event::post::document::Document::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::post::document::Document::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::post::reaction::Reaction
+pub type radroots_event::post::reaction::Reaction::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::post::reaction::Reaction::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::app_data::AppData
+pub type radroots_event::social::app_data::AppData::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::social::app_data::AppData::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::follow::Follow
+pub type radroots_event::social::follow::Follow::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::social::follow::Follow::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::geochat::GeoChat
+pub type radroots_event::social::geochat::GeoChat::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::social::geochat::GeoChat::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::gift_wrap::GiftWrap
+pub type radroots_event::social::gift_wrap::GiftWrap::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::social::gift_wrap::GiftWrap::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::job_feedback::JobFeedback
+pub type radroots_event::social::job_feedback::JobFeedback::Error = radroots_event_codec::encode::job::JobEncodeError
+pub fn radroots_event::social::job_feedback::JobFeedback::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::job_request::JobRequest
+pub type radroots_event::social::job_request::JobRequest::Error = radroots_event_codec::encode::job::JobEncodeError
+pub fn radroots_event::social::job_request::JobRequest::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::job_result::JobResult
+pub type radroots_event::social::job_result::JobResult::Error = radroots_event_codec::encode::job::JobEncodeError
+pub fn radroots_event::social::job_result::JobResult::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::list::List
+pub type radroots_event::social::list::List::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::social::list::List::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::list_set::ListSet
+pub type radroots_event::social::list_set::ListSet::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::social::list_set::ListSet::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::message::Message
+pub type radroots_event::social::message::Message::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::social::message::Message::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::message_file::MessageFile
+pub type radroots_event::social::message_file::MessageFile::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::social::message_file::MessageFile::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+impl radroots_event_codec::encode::tag_builders::RadrootsEventTagBuilder for radroots_event::social::seal::Seal
+pub type radroots_event::social::seal::Seal::Error = radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event::social::seal::Seal::build_tags(&self) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, Self::Error>
+pub mod radroots_event_codec::encode::trade
+pub fn radroots_event_codec::encode::trade::trade_mutation_event_build(radroots_event::trade::TradeMutationEnvelopeV1) -> core::result::Result<radroots_event::wire::v1::Nip01EventWireParts, radroots_event_codec::encode::EventEncodeError>
+pub fn radroots_event_codec::encode::trade::trade_mutation_tags(&radroots_event::trade::TradeMutationEnvelopeV1) -> core::result::Result<alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>, radroots_event_codec::encode::EventEncodeError>
+#[non_exhaustive] pub enum radroots_event_codec::encode::EncodeError
+pub radroots_event_codec::encode::EncodeError::Json
+impl radroots_event_codec::encode::EncodeError
+pub const fn radroots_event_codec::encode::EncodeError::code(self) -> &'static str
+impl core::error::Error for radroots_event_codec::encode::EncodeError
+impl core::fmt::Display for radroots_event_codec::encode::EncodeError
+pub fn radroots_event_codec::encode::EncodeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event_codec::encode::EventEncodeError
+pub radroots_event_codec::encode::EventEncodeError::EmptyRequiredField(&'static str)
+pub radroots_event_codec::encode::EventEncodeError::InvalidField(&'static str)
+pub radroots_event_codec::encode::EventEncodeError::InvalidKind(u32)
+pub radroots_event_codec::encode::EventEncodeError::Json
+impl radroots_event_codec::encode::EventEncodeError
+pub const fn radroots_event_codec::encode::EventEncodeError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::encode::EventEncodeError
+impl core::fmt::Display for radroots_event_codec::encode::EventEncodeError
+pub fn radroots_event_codec::encode::EventEncodeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub fn radroots_event_codec::encode::event(&radroots_event::envelope::EventEnvelope) -> core::result::Result<alloc::string::String, radroots_event_codec::encode::EncodeError>
+pub type radroots_event_codec::encode::RadrootsEncodeError = radroots_event_codec::encode::EventEncodeError
+pub mod radroots_event_codec::manifest
+pub mod radroots_event_codec::manifest::registry_v7
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ActorRole
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ActorRole::Any
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ActorRole::Application
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ActorRole::Buyer
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ActorRole::Farmer
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ActorRole::Member
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ActorRole::Moderator
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ActorRole::Relay
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ActorRole::Seller
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ActorRole::Service
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7AuthoringPolicy
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7AuthoringPolicy::GenericDraft
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7AuthoringPolicy::ReadOnly
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7AuthoringPolicy::TypedOnly
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Class
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Class::Addressable
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Class::Ephemeral
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Class::Regular
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Class::Replaceable
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ClassifiedListingPartition
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ClassifiedListingPartition::Ambiguous
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ClassifiedListingPartition::FocusedFoodAvailability
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ClassifiedListingPartition::GenericNip99
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ClassifiedListingPartition::OperationalListing
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ContentSchema
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ContentSchema::BinaryReference
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ContentSchema::Djot
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ContentSchema::Empty
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ContentSchema::Encrypted
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ContentSchema::JsonObject
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ContentSchema::Markdown
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ContentSchema::PlainText
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::AdmissionOnly
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::ClassifiedListingPartition
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::ClassifiedListingPartition::value: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ClassifiedListingPartition
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::Composite
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::Composite::parts: alloc::vec::Vec<radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator>
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::ContentJsonFieldEquals
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::ContentJsonFieldEquals::field: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::ContentJsonFieldEquals::value: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::DTagExact
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::DTagExact::value: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::DTagPrefix
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::DTagPrefix::prefix: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::DTagSuffix
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::DTagSuffix::suffix: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::EnvelopeType
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::EnvelopeType::value: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::KindOnly
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::TagEquals
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::TagEquals::name: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::TagEquals::value: alloc::string::String
+impl<'de> serde_core::de::Deserialize<'de> for radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator
+pub fn radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Privacy
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Privacy::Encrypted
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Privacy::LocalOnly
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Privacy::Public
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Privacy::Secret
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::CalendarProjection
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::FarmOpsProjection
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::GroupProjection
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::KnowledgeProjection
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::MarketProjection
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::NostrRelayPolicyProjection
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::OperationalListingInventoryAccounting
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::OperationalListingProjection
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::OrderProjection
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::ProfileProjection
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::SocialProjection
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::TradeProjection
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer::TradeValidation
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Stability
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Stability::Experimental
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Stability::Stable
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip01
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip09
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip17
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip18
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip22
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip23
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip25
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip28
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip29
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip42
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip51
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip52
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip53
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip54
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip56
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip57
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip78
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip90
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip94
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip98
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Nip99
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard::Radroots
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagCardinality
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagCardinality::OptionalMany
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagCardinality::OptionalOne
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagCardinality::RequiredMany
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagCardinality::RequiredOne
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::AddressableCoordinate
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::CalendarEnd
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::CalendarEventAuthor
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::CalendarEventReference
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::CalendarEventRevision
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::CalendarInclusionRequest
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::CalendarStart
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Category
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Citation
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::ClassifiedListingAddress
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Contract
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Counterparty
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::EventPointer
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Evidence
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::FreeBusy
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Geohash
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::GroupId
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Identifier
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Image
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Kind
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::ListDescription
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Location
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Nip01Coordinate
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::OperationalListingSnapshot
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Participant
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::PreviousEvent
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Price
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::PublishedAt
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Reference
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Relay
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::ReviewTarget
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::RootEvent
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::ServiceInput
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::ServiceOutput
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Source
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Status
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Summary
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::TimeZone
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Title
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Topic
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::Url
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic::UtcDayCoverage
+pub enum radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::AddressableCoordinate
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::CalendarDate
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::CalendarEventCoordinate
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::CalendarFreeBusy
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::CalendarRsvpStatus
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::CalendarUid
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::ContractId
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::DTag
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::EventId
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::EventPointer
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::Geohash
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::IanaTimeZoneId
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::Kind
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::Nip01Coordinate
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::PublicKey
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::RelayUrl
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::Sha256
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::Text
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::UnixTimestamp
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::Uri
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::Url
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::UtcDayIndex
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType::Uuid
+pub struct radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Inventory
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Inventory::event_contract_registry_version: u32
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Inventory::event_contracts: alloc::vec::Vec<radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry>
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Inventory::kind_contracts: alloc::vec::Vec<radroots_event_codec::manifest::registry_v7::RadrootsKindContractRegistryV7InventoryEntry>
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Inventory::schema_version: u32
+pub struct radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::author_role: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ActorRole
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::authoring_policy: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7AuthoringPolicy
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::class: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Class
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::content_schema: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7ContentSchema
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::contract_id: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::discriminator: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Discriminator
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::kind: u32
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::name: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::ordinal: usize
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::payload_type: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::privacy: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Privacy
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::reducers: alloc::vec::Vec<radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Reducer>
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::stability: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Stability
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7InventoryEntry::tags: alloc::vec::Vec<radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Tag>
+pub struct radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Tag
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Tag::cardinality: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagCardinality
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Tag::name: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Tag::relay_indexed: bool
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Tag::semantic: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagSemantic
+pub radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Tag::value_type: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7TagValueType
+pub struct radroots_event_codec::manifest::registry_v7::RadrootsKindContractRegistryV7InventoryEntry
+pub radroots_event_codec::manifest::registry_v7::RadrootsKindContractRegistryV7InventoryEntry::accepted_event_contracts: alloc::vec::Vec<alloc::string::String>
+pub radroots_event_codec::manifest::registry_v7::RadrootsKindContractRegistryV7InventoryEntry::canonical_constant: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsKindContractRegistryV7InventoryEntry::class: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Class
+pub radroots_event_codec::manifest::registry_v7::RadrootsKindContractRegistryV7InventoryEntry::kind: u32
+pub radroots_event_codec::manifest::registry_v7::RadrootsKindContractRegistryV7InventoryEntry::name: alloc::string::String
+pub radroots_event_codec::manifest::registry_v7::RadrootsKindContractRegistryV7InventoryEntry::ordinal: usize
+pub radroots_event_codec::manifest::registry_v7::RadrootsKindContractRegistryV7InventoryEntry::standard: radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Standard
+pub const radroots_event_codec::manifest::registry_v7::RADROOTS_EVENT_CONTRACT_REGISTRY_V7_EVENT_COUNT: usize
+pub const radroots_event_codec::manifest::registry_v7::RADROOTS_EVENT_CONTRACT_REGISTRY_V7_INVENTORY_SCHEMA_VERSION: u32
+pub const radroots_event_codec::manifest::registry_v7::RADROOTS_EVENT_CONTRACT_REGISTRY_V7_KIND_COUNT: usize
+pub const radroots_event_codec::manifest::registry_v7::RADROOTS_EVENT_CONTRACT_REGISTRY_V7_VERSION: u32
+pub fn radroots_event_codec::manifest::registry_v7::event_contract_registry_v7_inventory() -> radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Inventory
+pub fn radroots_event_codec::manifest::registry_v7::event_contract_registry_v7_inventory_json() -> core::result::Result<alloc::string::String, serde_json::error::Error>
+pub fn radroots_event_codec::manifest::registry_v7::event_contract_registry_v7_inventory_sha256() -> core::result::Result<alloc::string::String, serde_json::error::Error>
+pub fn radroots_event_codec::manifest::registry_v7::parse_event_contract_registry_v7_inventory_json(&str) -> core::result::Result<radroots_event_codec::manifest::registry_v7::RadrootsEventContractRegistryV7Inventory, serde_json::error::Error>
+pub enum radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::AdmissionOnly
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::ClassifiedListingPartition
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::ClassifiedListingPartition::value: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::Composite
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::Composite::parts: alloc::vec::Vec<radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator>
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::ContentJsonFieldEquals
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::ContentJsonFieldEquals::field: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::ContentJsonFieldEquals::value: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::DTagExact
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::DTagExact::value: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::DTagPrefix
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::DTagPrefix::prefix: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::DTagSuffix
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::DTagSuffix::suffix: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::EnvelopeType
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::EnvelopeType::value: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::KindOnly
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::TagEquals
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::TagEquals::name: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator::TagEquals::value: alloc::string::String
+pub struct radroots_event_codec::manifest::RadrootsKnowledgeContractManifest
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifest::contract_count: usize
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifest::contracts: alloc::vec::Vec<radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry>
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifest::radroots_event_codec_version: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifest::radroots_event_version: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifest::registry_version: u32
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifest::schema_version: u32
+pub struct radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::author_role: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::class: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::codec_support: radroots_event_codec::manifest::RadrootsKnowledgeManifestCodecSupport
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::content_schema: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::contract_id: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::deprecated: bool
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::discriminators: alloc::vec::Vec<radroots_event_codec::manifest::RadrootsKnowledgeManifestDiscriminator>
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::introduced_at: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::kind: u32
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::payload_type: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::privacy: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::reducers: alloc::vec::Vec<alloc::string::String>
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::replaced_by: core::option::Option<alloc::string::String>
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::sdk_builder_support: bool
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::sdk_draft_support: bool
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::stability: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::standard: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::tag_contracts: alloc::vec::Vec<radroots_event_codec::manifest::RadrootsKnowledgeManifestTagContract>
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::wasm_tag_builder_support: bool
+pub radroots_event_codec::manifest::RadrootsKnowledgeContractManifestEntry::wasm_verified_decode_support: bool
+pub struct radroots_event_codec::manifest::RadrootsKnowledgeManifestCodecSupport
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestCodecSupport::contract_validation: bool
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestCodecSupport::decode: bool
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestCodecSupport::encode: bool
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestCodecSupport::verified_decode: bool
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestCodecSupport::verified_decode_requires_nostr: bool
+pub struct radroots_event_codec::manifest::RadrootsKnowledgeManifestTagContract
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestTagContract::cardinality: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestTagContract::name: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestTagContract::relay_indexed: bool
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestTagContract::semantic: alloc::string::String
+pub radroots_event_codec::manifest::RadrootsKnowledgeManifestTagContract::value_type: alloc::string::String
+pub const radroots_event_codec::manifest::RADROOTS_KNOWLEDGE_CONTRACT_MANIFEST_SCHEMA_VERSION: u32
+pub fn radroots_event_codec::manifest::contract_manifest_json() -> core::result::Result<alloc::string::String, serde_json::error::Error>
+pub fn radroots_event_codec::manifest::contract_manifest_sha256() -> core::result::Result<alloc::string::String, serde_json::error::Error>
+pub fn radroots_event_codec::manifest::knowledge_contract_manifest() -> radroots_event_codec::manifest::RadrootsKnowledgeContractManifest
+pub fn radroots_event_codec::manifest::parse_knowledge_contract_manifest_json(&str) -> core::result::Result<radroots_event_codec::manifest::RadrootsKnowledgeContractManifest, serde_json::error::Error>
+pub mod radroots_event_codec::verify
+pub use radroots_event_codec::verify::ContractValidatedEvent
+pub use radroots_event_codec::verify::IdVerifiedEvent
+pub use radroots_event_codec::verify::RawEvent
+pub use radroots_event_codec::verify::SignatureVerifiedEvent
+pub use radroots_event_codec::verify::SignatureVerifier
+pub use radroots_event_codec::verify::VerificationError
+pub enum radroots_event_codec::verify::RadrootsDecodeError
+pub radroots_event_codec::verify::RadrootsDecodeError::ContractValidation(radroots_event::contract::registry_v7::ContractValidationError)
+pub radroots_event_codec::verify::RadrootsDecodeError::EventParse(radroots_event_codec::decode::EventParseError)
+pub radroots_event_codec::verify::RadrootsDecodeError::Nip01Verification(crate::verification::RadrootsNip01VerificationError)
+pub radroots_event_codec::verify::RadrootsDecodeError::UnsupportedContract
+pub radroots_event_codec::verify::RadrootsDecodeError::UnsupportedContract::contract_id: alloc::string::String
+impl radroots_event_codec::verify::RadrootsDecodeError
+pub const fn radroots_event_codec::verify::RadrootsDecodeError::code(&self) -> &'static str
+impl core::convert::From<radroots_event::contract::registry_v7::ContractValidationError> for radroots_event_codec::verify::RadrootsDecodeError
+pub fn radroots_event_codec::verify::RadrootsDecodeError::from(radroots_event::contract::registry_v7::ContractValidationError) -> Self
+impl core::convert::From<radroots_event_codec::decode::EventParseError> for radroots_event_codec::verify::RadrootsDecodeError
+pub fn radroots_event_codec::verify::RadrootsDecodeError::from(radroots_event_codec::decode::EventParseError) -> Self
+impl core::error::Error for radroots_event_codec::verify::RadrootsDecodeError
+impl core::fmt::Display for radroots_event_codec::verify::RadrootsDecodeError
+pub fn radroots_event_codec::verify::RadrootsDecodeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_event_codec::verify::RadrootsDecodedEvent
+pub radroots_event_codec::verify::RadrootsDecodedEvent::ContributionAttestation(radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::ContributionAttestation>)
+pub radroots_event_codec::verify::RadrootsDecodedEvent::EvidenceBounty(radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::EvidenceBounty>)
+pub radroots_event_codec::verify::RadrootsDecodedEvent::KnowledgeChangeProposal(radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeChangeProposal>)
+pub radroots_event_codec::verify::RadrootsDecodedEvent::KnowledgeClaim(radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeClaim>)
+pub radroots_event_codec::verify::RadrootsDecodedEvent::KnowledgeFieldReport(radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeFieldReport>)
+pub radroots_event_codec::verify::RadrootsDecodedEvent::KnowledgeRelation(radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeRelation>)
+pub radroots_event_codec::verify::RadrootsDecodedEvent::KnowledgeReview(radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeReview>)
+pub radroots_event_codec::verify::RadrootsDecodedEvent::KnowledgeSource(radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::KnowledgeSource>)
+pub radroots_event_codec::verify::RadrootsDecodedEvent::WikiArticle(radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::WikiArticle>)
+pub radroots_event_codec::verify::RadrootsDecodedEvent::WikiMergeRequest(radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::WikiMergeRequest>)
+pub radroots_event_codec::verify::RadrootsDecodedEvent::WikiRedirect(radroots_event_codec::decode::parsed::RadrootsParsedEvent<radroots_event::knowledge::WikiRedirect>)
+impl radroots_event_codec::verify::RadrootsDecodedEvent
+pub fn radroots_event_codec::verify::RadrootsDecodedEvent::event(&self) -> &radroots_event::envelope::EventEnvelope
+pub struct radroots_event_codec::verify::Nip01SignatureVerifier
+impl radroots_event::verification::SignatureVerifier for radroots_event_codec::verify::Nip01SignatureVerifier
+pub fn radroots_event_codec::verify::Nip01SignatureVerifier::verify_signature(&self, &radroots_event::envelope::EventEnvelope) -> core::result::Result<(), radroots_event::verification::Error>
+pub fn radroots_event_codec::verify::contract(radroots_event::verification::SignatureVerifiedEvent) -> core::result::Result<radroots_event::verification::ContractValidatedEvent, radroots_event::verification::Error>
+pub fn radroots_event_codec::verify::decode_validated_event(RadrootsContractValidatedEvent) -> core::result::Result<radroots_event_codec::verify::RadrootsDecodedEvent, radroots_event_codec::verify::RadrootsDecodeError>
+pub fn radroots_event_codec::verify::id(radroots_event::verification::RawEvent) -> core::result::Result<radroots_event::verification::IdVerifiedEvent, radroots_event::verification::Error>
+pub fn radroots_event_codec::verify::signature<V>(radroots_event::verification::IdVerifiedEvent, &V) -> core::result::Result<radroots_event::verification::SignatureVerifiedEvent, radroots_event::verification::Error> where V: radroots_event::verification::SignatureVerifier + ?core::marker::Sized
+pub fn radroots_event_codec::verify::verify_and_decode_radroots_event(radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event_codec::verify::RadrootsDecodedEvent, radroots_event_codec::verify::RadrootsDecodeError>
+#[non_exhaustive] pub enum radroots_event_codec::DecodeError
+pub radroots_event_codec::DecodeError::InputTooLarge
+pub radroots_event_codec::DecodeError::InputTooLarge::actual: usize
+pub radroots_event_codec::DecodeError::InputTooLarge::max: usize
+pub radroots_event_codec::DecodeError::InvalidEnvelope(radroots_event::envelope::EventEnvelopeError)
+pub radroots_event_codec::DecodeError::InvalidJson
+pub radroots_event_codec::DecodeError::InvalidWire(radroots_event::wire::v1::EventWireError)
+impl radroots_event_codec::decode::DecodeError
+pub const fn radroots_event_codec::decode::DecodeError::code(&self) -> &'static str
+impl core::error::Error for radroots_event_codec::decode::DecodeError
+pub fn radroots_event_codec::decode::DecodeError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_event_codec::decode::DecodeError
+pub fn radroots_event_codec::decode::DecodeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub enum radroots_event_codec::EncodeError
+pub radroots_event_codec::EncodeError::Json
+impl radroots_event_codec::encode::EncodeError
+pub const fn radroots_event_codec::encode::EncodeError::code(self) -> &'static str
+impl core::error::Error for radroots_event_codec::encode::EncodeError
+impl core::fmt::Display for radroots_event_codec::encode::EncodeError
+pub fn radroots_event_codec::encode::EncodeError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_event_codec::Codec
+impl radroots_event_codec::Codec
+pub fn radroots_event_codec::Codec::decode_event(&str) -> core::result::Result<radroots_event::verification::RawEvent, radroots_event_codec::decode::DecodeError>
+pub fn radroots_event_codec::Codec::decode_signed_event(&str) -> core::result::Result<radroots_event::draft::SignedEvent, radroots_event_codec::decode::DecodeError>
+pub fn radroots_event_codec::Codec::encode_event(&radroots_event::envelope::EventEnvelope) -> core::result::Result<alloc::string::String, radroots_event_codec::encode::EncodeError>
+pub fn radroots_event_codec::Codec::verify_contract(radroots_event::verification::SignatureVerifiedEvent) -> core::result::Result<radroots_event::verification::ContractValidatedEvent, radroots_event::verification::Error>
+pub fn radroots_event_codec::Codec::verify_id(radroots_event::verification::RawEvent) -> core::result::Result<radroots_event::verification::IdVerifiedEvent, radroots_event::verification::Error>
+pub fn radroots_event_codec::Codec::verify_signature<V>(radroots_event::verification::IdVerifiedEvent, &V) -> core::result::Result<radroots_event::verification::SignatureVerifiedEvent, radroots_event::verification::Error> where V: radroots_event::verification::SignatureVerifier + ?core::marker::Sized
diff --git a/contracts/api_baselines/radroots_geonames.txt b/contracts/api_baselines/radroots_geonames.txt
@@ -0,0 +1,163 @@
+pub mod radroots_geonames
+pub mod radroots_geonames::asset
+#[non_exhaustive] pub enum radroots_geonames::asset::AssetStatus
+pub radroots_geonames::asset::AssetStatus::Available
+pub radroots_geonames::asset::AssetStatus::Invalid
+pub radroots_geonames::asset::AssetStatus::Missing
+pub struct radroots_geonames::asset::AssetSpec
+impl radroots_geonames::asset::AssetSpec
+pub fn radroots_geonames::asset::AssetSpec::allowed_host(&self) -> &str
+pub const fn radroots_geonames::asset::AssetSpec::byte_size(&self) -> u64
+pub fn radroots_geonames::asset::AssetSpec::file_name(&self) -> &str
+pub fn radroots_geonames::asset::AssetSpec::new(impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>, u64, [u8; 32]) -> core::result::Result<Self, radroots_geonames::Error>
+pub const fn radroots_geonames::asset::AssetSpec::sha256(&self) -> &[u8; 32]
+pub fn radroots_geonames::asset::AssetSpec::source(&self) -> &str
+pub fn radroots_geonames::asset::AssetSpec::version(&self) -> &str
+pub const radroots_geonames::asset::OFFICIAL_ASSET_BYTE_SIZE: u64
+pub const radroots_geonames::asset::OFFICIAL_ASSET_FILE_NAME: &str
+pub const radroots_geonames::asset::OFFICIAL_ASSET_SHA256: [u8; 32]
+pub const radroots_geonames::asset::OFFICIAL_ASSET_SOURCE: &str
+pub const radroots_geonames::asset::OFFICIAL_ASSET_VERSION: &str
+pub fn radroots_geonames::asset::inspect(impl core::convert::AsRef<std::path::Path>, &radroots_geonames::asset::AssetSpec) -> core::result::Result<radroots_geonames::asset::AssetStatus, radroots_geonames::Error>
+pub fn radroots_geonames::asset::official_asset_spec() -> radroots_geonames::asset::AssetSpec
+pub mod radroots_geonames::database
+pub struct radroots_geonames::database::Geocoder
+impl radroots_geonames::database::Geocoder
+pub fn radroots_geonames::database::Geocoder::close(self) -> core::result::Result<(), radroots_geonames::Error>
+pub fn radroots_geonames::database::Geocoder::open(impl core::convert::AsRef<std::path::Path>, &radroots_geonames::asset::AssetSpec) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::database::Geocoder::query(&self, &radroots_geonames::query::Query) -> core::result::Result<radroots_geonames::query::QueryResult, radroots_geonames::Error>
+pub mod radroots_geonames::download
+#[non_exhaustive] pub enum radroots_geonames::download::FetchFailurePhase
+pub radroots_geonames::download::FetchFailurePhase::Cancelled
+pub radroots_geonames::download::FetchFailurePhase::Connect
+pub radroots_geonames::download::FetchFailurePhase::Read
+pub radroots_geonames::download::FetchFailurePhase::Response
+impl core::fmt::Display for radroots_geonames::download::FetchFailurePhase
+pub fn radroots_geonames::download::FetchFailurePhase::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub trait radroots_geonames::download::Fetcher
+pub fn radroots_geonames::download::Fetcher::fetch(&self, &str, &mut dyn core::io::write::Write) -> core::result::Result<(), radroots_geonames::Error>
+pub fn radroots_geonames::download::acquire(impl core::convert::AsRef<std::path::Path>, &radroots_geonames::asset::AssetSpec, &dyn radroots_geonames::download::Fetcher) -> core::result::Result<radroots_geonames::asset::AssetStatus, radroots_geonames::Error>
+pub mod radroots_geonames::model
+pub struct radroots_geonames::model::Candidate
+impl radroots_geonames::model::Candidate
+pub fn radroots_geonames::model::Candidate::admin1_id(&self) -> core::option::Option<&str>
+pub fn radroots_geonames::model::Candidate::admin1_name(&self) -> core::option::Option<&str>
+pub fn radroots_geonames::model::Candidate::country_id(&self) -> &str
+pub fn radroots_geonames::model::Candidate::country_name(&self) -> core::option::Option<&str>
+pub fn radroots_geonames::model::Candidate::display_name(&self) -> &str
+pub const fn radroots_geonames::model::Candidate::feature_id(&self) -> u64
+pub fn radroots_geonames::model::Candidate::name(&self) -> &str
+pub const fn radroots_geonames::model::Candidate::point(&self) -> radroots_geonames::model::Point
+pub struct radroots_geonames::model::Country
+impl radroots_geonames::model::Country
+pub const fn radroots_geonames::model::Country::center(&self) -> radroots_geonames::model::Point
+pub fn radroots_geonames::model::Country::id(&self) -> &str
+pub fn radroots_geonames::model::Country::name(&self) -> core::option::Option<&str>
+pub struct radroots_geonames::model::Point
+impl radroots_geonames::model::Point
+pub const fn radroots_geonames::model::Point::latitude(self) -> f64
+pub const fn radroots_geonames::model::Point::longitude(self) -> f64
+pub fn radroots_geonames::model::Point::new(f64, f64) -> core::result::Result<Self, radroots_geonames::Error>
+pub mod radroots_geonames::query
+pub struct radroots_geonames::query::Query
+impl radroots_geonames::query::Query
+pub const fn radroots_geonames::query::Query::countries() -> Self
+pub fn radroots_geonames::query::Query::exact_feature_id(&self) -> core::option::Option<u64>
+pub fn radroots_geonames::query::Query::feature_id(u64) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::freeform(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::freeform_text(&self) -> core::option::Option<&str>
+pub fn radroots_geonames::query::Query::is_country_list(&self) -> bool
+pub const fn radroots_geonames::query::Query::limit(&self) -> usize
+pub fn radroots_geonames::query::Query::locality(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::locality_fields(&self) -> core::option::Option<(&str, core::option::Option<&str>, core::option::Option<&str>)>
+pub const fn radroots_geonames::query::Query::reverse(radroots_geonames::model::Point) -> Self
+pub fn radroots_geonames::query::Query::reverse_point(&self) -> core::option::Option<radroots_geonames::model::Point>
+pub fn radroots_geonames::query::Query::with_country(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::with_limit(self, usize) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::with_radius_degrees(self, f64) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::with_region(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_geonames::Error>
+pub struct radroots_geonames::query::QueryResult
+impl radroots_geonames::query::QueryResult
+pub fn radroots_geonames::query::QueryResult::as_candidates(&self) -> core::option::Option<&[radroots_geonames::model::Candidate]>
+pub fn radroots_geonames::query::QueryResult::as_countries(&self) -> core::option::Option<&[radroots_geonames::model::Country]>
+#[non_exhaustive] pub enum radroots_geonames::AssetStatus
+pub radroots_geonames::AssetStatus::Available
+pub radroots_geonames::AssetStatus::Invalid
+pub radroots_geonames::AssetStatus::Missing
+#[non_exhaustive] pub enum radroots_geonames::Error
+pub radroots_geonames::Error::AssetDestinationBusy
+pub radroots_geonames::Error::AssetHashMismatch
+pub radroots_geonames::Error::AssetSizeMismatch
+pub radroots_geonames::Error::AssetSizeMismatch::actual: u64
+pub radroots_geonames::Error::AssetSizeMismatch::expected: u64
+pub radroots_geonames::Error::DatabaseConnectionUnavailable
+pub radroots_geonames::Error::DatabaseOperationFailed
+pub radroots_geonames::Error::DatabaseOperationFailed::operation: &'static str
+pub radroots_geonames::Error::Fetch
+pub radroots_geonames::Error::Fetch::phase: radroots_geonames::download::FetchFailurePhase
+pub radroots_geonames::Error::InvalidAssetByteSize
+pub radroots_geonames::Error::InvalidAssetFileName
+pub radroots_geonames::Error::InvalidAssetSource
+pub radroots_geonames::Error::InvalidAssetVersion
+pub radroots_geonames::Error::InvalidDatabase
+pub radroots_geonames::Error::InvalidDatabaseSchema
+pub radroots_geonames::Error::InvalidFeatureId
+pub radroots_geonames::Error::InvalidPoint
+pub radroots_geonames::Error::InvalidQueryLimit
+pub radroots_geonames::Error::InvalidQueryRadius
+pub radroots_geonames::Error::InvalidQueryText
+pub radroots_geonames::Error::Io
+pub radroots_geonames::Error::Io::kind: core::io::error::ErrorKind
+pub radroots_geonames::Error::Io::operation: &'static str
+pub radroots_geonames::Error::QueryOptionNotApplicable
+pub radroots_geonames::Error::UnsafeAssetDestination
+pub radroots_geonames::Error::UntrustedAssetSource
+impl core::error::Error for radroots_geonames::Error
+impl core::fmt::Display for radroots_geonames::Error
+pub fn radroots_geonames::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_geonames::AssetSpec
+impl radroots_geonames::asset::AssetSpec
+pub fn radroots_geonames::asset::AssetSpec::allowed_host(&self) -> &str
+pub const fn radroots_geonames::asset::AssetSpec::byte_size(&self) -> u64
+pub fn radroots_geonames::asset::AssetSpec::file_name(&self) -> &str
+pub fn radroots_geonames::asset::AssetSpec::new(impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>, u64, [u8; 32]) -> core::result::Result<Self, radroots_geonames::Error>
+pub const fn radroots_geonames::asset::AssetSpec::sha256(&self) -> &[u8; 32]
+pub fn radroots_geonames::asset::AssetSpec::source(&self) -> &str
+pub fn radroots_geonames::asset::AssetSpec::version(&self) -> &str
+pub struct radroots_geonames::Candidate
+impl radroots_geonames::model::Candidate
+pub fn radroots_geonames::model::Candidate::admin1_id(&self) -> core::option::Option<&str>
+pub fn radroots_geonames::model::Candidate::admin1_name(&self) -> core::option::Option<&str>
+pub fn radroots_geonames::model::Candidate::country_id(&self) -> &str
+pub fn radroots_geonames::model::Candidate::country_name(&self) -> core::option::Option<&str>
+pub fn radroots_geonames::model::Candidate::display_name(&self) -> &str
+pub const fn radroots_geonames::model::Candidate::feature_id(&self) -> u64
+pub fn radroots_geonames::model::Candidate::name(&self) -> &str
+pub const fn radroots_geonames::model::Candidate::point(&self) -> radroots_geonames::model::Point
+pub struct radroots_geonames::Geocoder
+impl radroots_geonames::database::Geocoder
+pub fn radroots_geonames::database::Geocoder::close(self) -> core::result::Result<(), radroots_geonames::Error>
+pub fn radroots_geonames::database::Geocoder::open(impl core::convert::AsRef<std::path::Path>, &radroots_geonames::asset::AssetSpec) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::database::Geocoder::query(&self, &radroots_geonames::query::Query) -> core::result::Result<radroots_geonames::query::QueryResult, radroots_geonames::Error>
+pub struct radroots_geonames::Point
+impl radroots_geonames::model::Point
+pub const fn radroots_geonames::model::Point::latitude(self) -> f64
+pub const fn radroots_geonames::model::Point::longitude(self) -> f64
+pub fn radroots_geonames::model::Point::new(f64, f64) -> core::result::Result<Self, radroots_geonames::Error>
+pub struct radroots_geonames::Query
+impl radroots_geonames::query::Query
+pub const fn radroots_geonames::query::Query::countries() -> Self
+pub fn radroots_geonames::query::Query::exact_feature_id(&self) -> core::option::Option<u64>
+pub fn radroots_geonames::query::Query::feature_id(u64) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::freeform(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::freeform_text(&self) -> core::option::Option<&str>
+pub fn radroots_geonames::query::Query::is_country_list(&self) -> bool
+pub const fn radroots_geonames::query::Query::limit(&self) -> usize
+pub fn radroots_geonames::query::Query::locality(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::locality_fields(&self) -> core::option::Option<(&str, core::option::Option<&str>, core::option::Option<&str>)>
+pub const fn radroots_geonames::query::Query::reverse(radroots_geonames::model::Point) -> Self
+pub fn radroots_geonames::query::Query::reverse_point(&self) -> core::option::Option<radroots_geonames::model::Point>
+pub fn radroots_geonames::query::Query::with_country(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::with_limit(self, usize) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::with_radius_degrees(self, f64) -> core::result::Result<Self, radroots_geonames::Error>
+pub fn radroots_geonames::query::Query::with_region(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_geonames::Error>
diff --git a/contracts/api_baselines/radroots_identity.txt b/contracts/api_baselines/radroots_identity.txt
@@ -0,0 +1,378 @@
+pub mod radroots_identity
+pub mod radroots_identity::account
+#[non_exhaustive] pub enum radroots_identity::account::Status
+pub radroots_identity::account::Status::NotConfigured
+pub radroots_identity::account::Status::PublicOnly
+pub radroots_identity::account::Status::PublicOnly::account: radroots_identity::account::Record
+pub radroots_identity::account::Status::Ready
+pub radroots_identity::account::Status::Ready::account: radroots_identity::account::Record
+impl radroots_identity::account::Status
+pub const fn radroots_identity::account::Status::account(&self) -> core::option::Option<&radroots_identity::account::Record>
+pub const fn radroots_identity::account::Status::is_ready(&self) -> bool
+#[repr(transparent)] pub struct radroots_identity::account::AccountId(_)
+impl radroots_identity::account::AccountId
+pub const radroots_identity::account::AccountId::BYTE_LENGTH: usize
+pub const radroots_identity::account::AccountId::HEX_LENGTH: usize
+pub const fn radroots_identity::account::AccountId::as_bytes(&self) -> &[u8; 32]
+pub fn radroots_identity::account::AccountId::from_bytes([u8; 32]) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::account::AccountId::from_hex(&str) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::account::AccountId::from_slice(&[u8]) -> core::result::Result<Self, radroots_identity::Error>
+pub const fn radroots_identity::account::AccountId::into_bytes(self) -> [u8; 32]
+pub fn radroots_identity::account::AccountId::to_hex(self) -> alloc::string::String
+impl radroots_identity::account::AccountId
+pub const fn radroots_identity::account::AccountId::from_identity_id(radroots_identity::key::IdentityId) -> Self
+pub const fn radroots_identity::account::AccountId::from_public_identity(&radroots_identity::profile::PublicIdentity) -> Self
+impl core::convert::AsRef<[u8]> for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::as_ref(&self) -> &[u8]
+impl core::convert::From<&radroots_identity::profile::PublicIdentity> for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::from(&radroots_identity::profile::PublicIdentity) -> Self
+impl core::convert::From<radroots_identity::key::IdentityId> for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::from(radroots_identity::key::IdentityId) -> Self
+impl core::convert::TryFrom<&[u8]> for radroots_identity::account::AccountId
+pub type radroots_identity::account::AccountId::Error = radroots_identity::Error
+pub fn radroots_identity::account::AccountId::try_from(&[u8]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<&str> for radroots_identity::account::AccountId
+pub type radroots_identity::account::AccountId::Error = radroots_identity::Error
+pub fn radroots_identity::account::AccountId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<[u8; 32]> for radroots_identity::account::AccountId
+pub type radroots_identity::account::AccountId::Error = radroots_identity::Error
+pub fn radroots_identity::account::AccountId::try_from([u8; 32]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_identity::account::AccountId
+pub type radroots_identity::account::AccountId::Error = radroots_identity::Error
+pub fn radroots_identity::account::AccountId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Debug for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_identity::account::AccountId
+pub type radroots_identity::account::AccountId::Err = radroots_identity::Error
+pub fn radroots_identity::account::AccountId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::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_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_identity::account::Record
+impl radroots_identity::account::Record
+pub const fn radroots_identity::account::Record::created_at_unix(&self) -> u64
+pub const fn radroots_identity::account::Record::id(&self) -> radroots_identity::account::AccountId
+pub fn radroots_identity::account::Record::label(&self) -> core::option::Option<&str>
+pub fn radroots_identity::account::Record::new(radroots_identity::profile::PublicIdentity, core::option::Option<alloc::string::String>, u64) -> Self
+pub const fn radroots_identity::account::Record::public_identity(&self) -> &radroots_identity::profile::PublicIdentity
+pub fn radroots_identity::account::Record::set_label(&mut self, core::option::Option<alloc::string::String>)
+pub fn radroots_identity::account::Record::touch_updated(&mut self, u64) -> core::result::Result<(), radroots_identity::Error>
+pub fn radroots_identity::account::Record::try_from_parts(radroots_identity::account::AccountId, radroots_identity::profile::PublicIdentity, core::option::Option<alloc::string::String>, u64, u64) -> core::result::Result<Self, radroots_identity::Error>
+pub const fn radroots_identity::account::Record::updated_at_unix(&self) -> u64
+impl<'de> serde_core::de::Deserialize<'de> for radroots_identity::account::Record
+pub fn radroots_identity::account::Record::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub mod radroots_identity::key
+#[repr(transparent)] pub struct radroots_identity::key::IdentityId(_)
+impl radroots_identity::key::IdentityId
+pub const radroots_identity::key::IdentityId::BYTE_LENGTH: usize
+pub const radroots_identity::key::IdentityId::HEX_LENGTH: usize
+pub const fn radroots_identity::key::IdentityId::as_bytes(&self) -> &[u8; 32]
+pub fn radroots_identity::key::IdentityId::from_bytes([u8; 32]) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::key::IdentityId::from_hex(&str) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::key::IdentityId::from_slice(&[u8]) -> core::result::Result<Self, radroots_identity::Error>
+pub const fn radroots_identity::key::IdentityId::into_bytes(self) -> [u8; 32]
+pub fn radroots_identity::key::IdentityId::to_hex(self) -> alloc::string::String
+impl radroots_identity::key::IdentityId
+pub const fn radroots_identity::key::IdentityId::from_public_key(radroots_identity::key::PublicKey) -> Self
+impl core::convert::AsRef<[u8]> for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::as_ref(&self) -> &[u8]
+impl core::convert::From<radroots_identity::key::IdentityId> for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::from(radroots_identity::key::IdentityId) -> Self
+impl core::convert::From<radroots_identity::key::PublicKey> for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::from(radroots_identity::key::PublicKey) -> Self
+impl core::convert::TryFrom<&[u8]> for radroots_identity::key::IdentityId
+pub type radroots_identity::key::IdentityId::Error = radroots_identity::Error
+pub fn radroots_identity::key::IdentityId::try_from(&[u8]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<&str> for radroots_identity::key::IdentityId
+pub type radroots_identity::key::IdentityId::Error = radroots_identity::Error
+pub fn radroots_identity::key::IdentityId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<[u8; 32]> for radroots_identity::key::IdentityId
+pub type radroots_identity::key::IdentityId::Error = radroots_identity::Error
+pub fn radroots_identity::key::IdentityId::try_from([u8; 32]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_identity::key::IdentityId
+pub type radroots_identity::key::IdentityId::Error = radroots_identity::Error
+pub fn radroots_identity::key::IdentityId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Debug for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_identity::key::IdentityId
+pub type radroots_identity::key::IdentityId::Err = radroots_identity::Error
+pub fn radroots_identity::key::IdentityId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::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_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+#[repr(transparent)] pub struct radroots_identity::key::PublicKey(_)
+impl radroots_identity::key::PublicKey
+pub const radroots_identity::key::PublicKey::BYTE_LENGTH: usize
+pub const radroots_identity::key::PublicKey::HEX_LENGTH: usize
+pub const fn radroots_identity::key::PublicKey::as_bytes(&self) -> &[u8; 32]
+pub fn radroots_identity::key::PublicKey::from_bytes([u8; 32]) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::key::PublicKey::from_hex(&str) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::key::PublicKey::from_slice(&[u8]) -> core::result::Result<Self, radroots_identity::Error>
+pub const fn radroots_identity::key::PublicKey::into_bytes(self) -> [u8; 32]
+pub fn radroots_identity::key::PublicKey::to_hex(self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_identity::key::PublicKey
+pub fn radroots_identity::key::PublicKey::as_ref(&self) -> &[u8]
+impl core::convert::From<radroots_identity::key::PublicKey> for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::from(radroots_identity::key::PublicKey) -> Self
+impl core::convert::TryFrom<&[u8]> for radroots_identity::key::PublicKey
+pub type radroots_identity::key::PublicKey::Error = radroots_identity::Error
+pub fn radroots_identity::key::PublicKey::try_from(&[u8]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<&str> for radroots_identity::key::PublicKey
+pub type radroots_identity::key::PublicKey::Error = radroots_identity::Error
+pub fn radroots_identity::key::PublicKey::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<[u8; 32]> for radroots_identity::key::PublicKey
+pub type radroots_identity::key::PublicKey::Error = radroots_identity::Error
+pub fn radroots_identity::key::PublicKey::try_from([u8; 32]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_identity::key::PublicKey
+pub type radroots_identity::key::PublicKey::Error = radroots_identity::Error
+pub fn radroots_identity::key::PublicKey::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Debug for radroots_identity::key::PublicKey
+pub fn radroots_identity::key::PublicKey::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_identity::key::PublicKey
+pub fn radroots_identity::key::PublicKey::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_identity::key::PublicKey
+pub type radroots_identity::key::PublicKey::Err = radroots_identity::Error
+pub fn radroots_identity::key::PublicKey::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_identity::key::PublicKey
+pub fn radroots_identity::key::PublicKey::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_identity::key::PublicKey
+pub fn radroots_identity::key::PublicKey::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub mod radroots_identity::profile
+pub struct radroots_identity::profile::Profile
+impl radroots_identity::profile::Profile
+pub const fn radroots_identity::profile::Profile::is_empty(&self) -> bool
+pub const fn radroots_identity::profile::Profile::new() -> Self
+pub fn radroots_identity::profile::Profile::username(&self) -> core::option::Option<&radroots_identity::username::Username>
+pub fn radroots_identity::profile::Profile::with_username(self, radroots_identity::username::Username) -> Self
+pub struct radroots_identity::profile::PublicIdentity
+impl radroots_identity::profile::PublicIdentity
+pub const fn radroots_identity::profile::PublicIdentity::id(&self) -> radroots_identity::key::IdentityId
+pub const fn radroots_identity::profile::PublicIdentity::new(radroots_identity::key::PublicKey) -> Self
+pub fn radroots_identity::profile::PublicIdentity::profile(&self) -> core::option::Option<&radroots_identity::profile::Profile>
+pub const fn radroots_identity::profile::PublicIdentity::public_key(&self) -> radroots_identity::key::PublicKey
+pub fn radroots_identity::profile::PublicIdentity::try_from_parts(radroots_identity::key::IdentityId, radroots_identity::key::PublicKey, core::option::Option<radroots_identity::profile::Profile>) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::profile::PublicIdentity::with_profile(self, radroots_identity::profile::Profile) -> Self
+impl core::convert::From<&radroots_identity::profile::PublicIdentity> for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::from(&radroots_identity::profile::PublicIdentity) -> Self
+impl<'de> serde_core::de::Deserialize<'de> for radroots_identity::profile::PublicIdentity
+pub fn radroots_identity::profile::PublicIdentity::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub mod radroots_identity::username
+#[repr(transparent)] pub struct radroots_identity::username::Username(_)
+impl radroots_identity::username::Username
+pub fn radroots_identity::username::Username::as_str(&self) -> &str
+pub fn radroots_identity::username::Username::into_string(self) -> alloc::string::String
+pub fn radroots_identity::username::Username::parse(&str) -> core::result::Result<Self, radroots_identity::Error>
+impl core::convert::AsRef<str> for radroots_identity::username::Username
+pub fn radroots_identity::username::Username::as_ref(&self) -> &str
+impl core::convert::TryFrom<&str> for radroots_identity::username::Username
+pub type radroots_identity::username::Username::Error = radroots_identity::Error
+pub fn radroots_identity::username::Username::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_identity::username::Username
+pub type radroots_identity::username::Username::Error = radroots_identity::Error
+pub fn radroots_identity::username::Username::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Debug for radroots_identity::username::Username
+pub fn radroots_identity::username::Username::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_identity::username::Username
+pub fn radroots_identity::username::Username::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_identity::username::Username
+pub type radroots_identity::username::Username::Err = radroots_identity::Error
+pub fn radroots_identity::username::Username::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_identity::username::Username
+pub fn radroots_identity::username::Username::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_identity::username::Username
+pub fn radroots_identity::username::Username::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub const radroots_identity::username::MAX_LENGTH: usize
+pub const radroots_identity::username::MIN_LENGTH: usize
+#[non_exhaustive] pub enum radroots_identity::Error
+pub radroots_identity::Error::AccountIdMismatch
+pub radroots_identity::Error::AccountUpdateRegressed
+pub radroots_identity::Error::AccountUpdateRegressed::current_updated_at_unix: u64
+pub radroots_identity::Error::AccountUpdateRegressed::proposed_updated_at_unix: u64
+pub radroots_identity::Error::AccountUpdatedBeforeCreated
+pub radroots_identity::Error::AccountUpdatedBeforeCreated::created_at_unix: u64
+pub radroots_identity::Error::AccountUpdatedBeforeCreated::updated_at_unix: u64
+pub radroots_identity::Error::IdentityIdMismatch
+pub radroots_identity::Error::InvalidByteLength
+pub radroots_identity::Error::InvalidByteLength::actual: usize
+pub radroots_identity::Error::InvalidByteLength::expected: usize
+pub radroots_identity::Error::InvalidHexCharacter
+pub radroots_identity::Error::InvalidHexCharacter::index: usize
+pub radroots_identity::Error::InvalidHexLength
+pub radroots_identity::Error::InvalidHexLength::actual: usize
+pub radroots_identity::Error::InvalidHexLength::expected: usize
+pub radroots_identity::Error::InvalidPublicKeyBytes
+pub radroots_identity::Error::InvalidUsernameCharacter
+pub radroots_identity::Error::InvalidUsernameCharacter::index: usize
+pub radroots_identity::Error::InvalidUsernameDotPlacement
+pub radroots_identity::Error::InvalidUsernameLength
+pub radroots_identity::Error::InvalidUsernameLength::actual: usize
+pub radroots_identity::Error::InvalidUsernameLength::max: usize
+pub radroots_identity::Error::InvalidUsernameLength::min: usize
+#[repr(transparent)] pub struct radroots_identity::AccountId(_)
+impl radroots_identity::account::AccountId
+pub const radroots_identity::account::AccountId::BYTE_LENGTH: usize
+pub const radroots_identity::account::AccountId::HEX_LENGTH: usize
+pub const fn radroots_identity::account::AccountId::as_bytes(&self) -> &[u8; 32]
+pub fn radroots_identity::account::AccountId::from_bytes([u8; 32]) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::account::AccountId::from_hex(&str) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::account::AccountId::from_slice(&[u8]) -> core::result::Result<Self, radroots_identity::Error>
+pub const fn radroots_identity::account::AccountId::into_bytes(self) -> [u8; 32]
+pub fn radroots_identity::account::AccountId::to_hex(self) -> alloc::string::String
+impl radroots_identity::account::AccountId
+pub const fn radroots_identity::account::AccountId::from_identity_id(radroots_identity::key::IdentityId) -> Self
+pub const fn radroots_identity::account::AccountId::from_public_identity(&radroots_identity::profile::PublicIdentity) -> Self
+impl core::convert::AsRef<[u8]> for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::as_ref(&self) -> &[u8]
+impl core::convert::From<&radroots_identity::profile::PublicIdentity> for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::from(&radroots_identity::profile::PublicIdentity) -> Self
+impl core::convert::From<radroots_identity::key::IdentityId> for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::from(radroots_identity::key::IdentityId) -> Self
+impl core::convert::TryFrom<&[u8]> for radroots_identity::account::AccountId
+pub type radroots_identity::account::AccountId::Error = radroots_identity::Error
+pub fn radroots_identity::account::AccountId::try_from(&[u8]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<&str> for radroots_identity::account::AccountId
+pub type radroots_identity::account::AccountId::Error = radroots_identity::Error
+pub fn radroots_identity::account::AccountId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<[u8; 32]> for radroots_identity::account::AccountId
+pub type radroots_identity::account::AccountId::Error = radroots_identity::Error
+pub fn radroots_identity::account::AccountId::try_from([u8; 32]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_identity::account::AccountId
+pub type radroots_identity::account::AccountId::Error = radroots_identity::Error
+pub fn radroots_identity::account::AccountId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Debug for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_identity::account::AccountId
+pub type radroots_identity::account::AccountId::Err = radroots_identity::Error
+pub fn radroots_identity::account::AccountId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::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_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+#[repr(transparent)] pub struct radroots_identity::IdentityId(_)
+impl radroots_identity::key::IdentityId
+pub const radroots_identity::key::IdentityId::BYTE_LENGTH: usize
+pub const radroots_identity::key::IdentityId::HEX_LENGTH: usize
+pub const fn radroots_identity::key::IdentityId::as_bytes(&self) -> &[u8; 32]
+pub fn radroots_identity::key::IdentityId::from_bytes([u8; 32]) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::key::IdentityId::from_hex(&str) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::key::IdentityId::from_slice(&[u8]) -> core::result::Result<Self, radroots_identity::Error>
+pub const fn radroots_identity::key::IdentityId::into_bytes(self) -> [u8; 32]
+pub fn radroots_identity::key::IdentityId::to_hex(self) -> alloc::string::String
+impl radroots_identity::key::IdentityId
+pub const fn radroots_identity::key::IdentityId::from_public_key(radroots_identity::key::PublicKey) -> Self
+impl core::convert::AsRef<[u8]> for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::as_ref(&self) -> &[u8]
+impl core::convert::From<radroots_identity::key::IdentityId> for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::from(radroots_identity::key::IdentityId) -> Self
+impl core::convert::From<radroots_identity::key::PublicKey> for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::from(radroots_identity::key::PublicKey) -> Self
+impl core::convert::TryFrom<&[u8]> for radroots_identity::key::IdentityId
+pub type radroots_identity::key::IdentityId::Error = radroots_identity::Error
+pub fn radroots_identity::key::IdentityId::try_from(&[u8]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<&str> for radroots_identity::key::IdentityId
+pub type radroots_identity::key::IdentityId::Error = radroots_identity::Error
+pub fn radroots_identity::key::IdentityId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<[u8; 32]> for radroots_identity::key::IdentityId
+pub type radroots_identity::key::IdentityId::Error = radroots_identity::Error
+pub fn radroots_identity::key::IdentityId::try_from([u8; 32]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_identity::key::IdentityId
+pub type radroots_identity::key::IdentityId::Error = radroots_identity::Error
+pub fn radroots_identity::key::IdentityId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Debug for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_identity::key::IdentityId
+pub type radroots_identity::key::IdentityId::Err = radroots_identity::Error
+pub fn radroots_identity::key::IdentityId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::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_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_identity::Profile
+impl radroots_identity::profile::Profile
+pub const fn radroots_identity::profile::Profile::is_empty(&self) -> bool
+pub const fn radroots_identity::profile::Profile::new() -> Self
+pub fn radroots_identity::profile::Profile::username(&self) -> core::option::Option<&radroots_identity::username::Username>
+pub fn radroots_identity::profile::Profile::with_username(self, radroots_identity::username::Username) -> Self
+pub struct radroots_identity::PublicIdentity
+impl radroots_identity::profile::PublicIdentity
+pub const fn radroots_identity::profile::PublicIdentity::id(&self) -> radroots_identity::key::IdentityId
+pub const fn radroots_identity::profile::PublicIdentity::new(radroots_identity::key::PublicKey) -> Self
+pub fn radroots_identity::profile::PublicIdentity::profile(&self) -> core::option::Option<&radroots_identity::profile::Profile>
+pub const fn radroots_identity::profile::PublicIdentity::public_key(&self) -> radroots_identity::key::PublicKey
+pub fn radroots_identity::profile::PublicIdentity::try_from_parts(radroots_identity::key::IdentityId, radroots_identity::key::PublicKey, core::option::Option<radroots_identity::profile::Profile>) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::profile::PublicIdentity::with_profile(self, radroots_identity::profile::Profile) -> Self
+impl core::convert::From<&radroots_identity::profile::PublicIdentity> for radroots_identity::account::AccountId
+pub fn radroots_identity::account::AccountId::from(&radroots_identity::profile::PublicIdentity) -> Self
+impl<'de> serde_core::de::Deserialize<'de> for radroots_identity::profile::PublicIdentity
+pub fn radroots_identity::profile::PublicIdentity::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+#[repr(transparent)] pub struct radroots_identity::PublicKey(_)
+impl radroots_identity::key::PublicKey
+pub const radroots_identity::key::PublicKey::BYTE_LENGTH: usize
+pub const radroots_identity::key::PublicKey::HEX_LENGTH: usize
+pub const fn radroots_identity::key::PublicKey::as_bytes(&self) -> &[u8; 32]
+pub fn radroots_identity::key::PublicKey::from_bytes([u8; 32]) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::key::PublicKey::from_hex(&str) -> core::result::Result<Self, radroots_identity::Error>
+pub fn radroots_identity::key::PublicKey::from_slice(&[u8]) -> core::result::Result<Self, radroots_identity::Error>
+pub const fn radroots_identity::key::PublicKey::into_bytes(self) -> [u8; 32]
+pub fn radroots_identity::key::PublicKey::to_hex(self) -> alloc::string::String
+impl core::convert::AsRef<[u8]> for radroots_identity::key::PublicKey
+pub fn radroots_identity::key::PublicKey::as_ref(&self) -> &[u8]
+impl core::convert::From<radroots_identity::key::PublicKey> for radroots_identity::key::IdentityId
+pub fn radroots_identity::key::IdentityId::from(radroots_identity::key::PublicKey) -> Self
+impl core::convert::TryFrom<&[u8]> for radroots_identity::key::PublicKey
+pub type radroots_identity::key::PublicKey::Error = radroots_identity::Error
+pub fn radroots_identity::key::PublicKey::try_from(&[u8]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<&str> for radroots_identity::key::PublicKey
+pub type radroots_identity::key::PublicKey::Error = radroots_identity::Error
+pub fn radroots_identity::key::PublicKey::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<[u8; 32]> for radroots_identity::key::PublicKey
+pub type radroots_identity::key::PublicKey::Error = radroots_identity::Error
+pub fn radroots_identity::key::PublicKey::try_from([u8; 32]) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_identity::key::PublicKey
+pub type radroots_identity::key::PublicKey::Error = radroots_identity::Error
+pub fn radroots_identity::key::PublicKey::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Debug for radroots_identity::key::PublicKey
+pub fn radroots_identity::key::PublicKey::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_identity::key::PublicKey
+pub fn radroots_identity::key::PublicKey::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_identity::key::PublicKey
+pub type radroots_identity::key::PublicKey::Err = radroots_identity::Error
+pub fn radroots_identity::key::PublicKey::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_identity::key::PublicKey
+pub fn radroots_identity::key::PublicKey::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_identity::key::PublicKey
+pub fn radroots_identity::key::PublicKey::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+#[repr(transparent)] pub struct radroots_identity::Username(_)
+impl radroots_identity::username::Username
+pub fn radroots_identity::username::Username::as_str(&self) -> &str
+pub fn radroots_identity::username::Username::into_string(self) -> alloc::string::String
+pub fn radroots_identity::username::Username::parse(&str) -> core::result::Result<Self, radroots_identity::Error>
+impl core::convert::AsRef<str> for radroots_identity::username::Username
+pub fn radroots_identity::username::Username::as_ref(&self) -> &str
+impl core::convert::TryFrom<&str> for radroots_identity::username::Username
+pub type radroots_identity::username::Username::Error = radroots_identity::Error
+pub fn radroots_identity::username::Username::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_identity::username::Username
+pub type radroots_identity::username::Username::Error = radroots_identity::Error
+pub fn radroots_identity::username::Username::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Debug for radroots_identity::username::Username
+pub fn radroots_identity::username::Username::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_identity::username::Username
+pub fn radroots_identity::username::Username::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_identity::username::Username
+pub type radroots_identity::username::Username::Err = radroots_identity::Error
+pub fn radroots_identity::username::Username::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_identity::username::Username
+pub fn radroots_identity::username::Username::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_identity::username::Username
+pub fn radroots_identity::username::Username::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
diff --git a/contracts/api_baselines/radroots_nostr.txt b/contracts/api_baselines/radroots_nostr.txt
@@ -0,0 +1,339 @@
+pub mod radroots_nostr
+pub mod radroots_nostr::blossom
+#[non_exhaustive] pub enum radroots_nostr::blossom::AuthorizationError
+pub radroots_nostr::blossom::AuthorizationError::BlossomClaim(radroots_blossom::error::Error)
+pub radroots_nostr::blossom::AuthorizationError::EmptyHeaderPayload
+pub radroots_nostr::blossom::AuthorizationError::EventSigning
+pub radroots_nostr::blossom::AuthorizationError::HeaderPaddingForbidden
+pub radroots_nostr::blossom::AuthorizationError::InvalidEventId
+pub radroots_nostr::blossom::AuthorizationError::InvalidEventJson
+pub radroots_nostr::blossom::AuthorizationError::InvalidEventKind
+pub radroots_nostr::blossom::AuthorizationError::InvalidEventKind::actual: u64
+pub radroots_nostr::blossom::AuthorizationError::InvalidEventSignature
+pub radroots_nostr::blossom::AuthorizationError::InvalidHeaderBase64
+pub radroots_nostr::blossom::AuthorizationError::InvalidHeaderScheme
+pub radroots_nostr::blossom::AuthorizationError::InvalidHeaderUtf8
+pub radroots_nostr::blossom::AuthorizationError::InvalidHeaderWhitespace
+pub radroots_nostr::blossom::AuthorizationError::NonCanonicalHeaderBase64
+impl radroots_nostr::blossom::AuthorizationError
+pub fn radroots_nostr::blossom::AuthorizationError::blossom_claim_error(&self) -> core::option::Option<&radroots_blossom::error::Error>
+pub const fn radroots_nostr::blossom::AuthorizationError::code(&self) -> &'static str
+impl core::convert::From<radroots_blossom::error::Error> for radroots_nostr::blossom::AuthorizationError
+pub fn radroots_nostr::blossom::AuthorizationError::from(radroots_blossom::error::Error) -> Self
+impl core::error::Error for radroots_nostr::blossom::AuthorizationError
+impl core::fmt::Display for radroots_nostr::blossom::AuthorizationError
+pub fn radroots_nostr::blossom::AuthorizationError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_nostr::blossom::AuthorizationHeader(_)
+impl radroots_nostr::blossom::AuthorizationHeader
+pub fn radroots_nostr::blossom::AuthorizationHeader::as_str(&self) -> &str
+pub fn radroots_nostr::blossom::AuthorizationHeader::into_string(self) -> alloc::string::String
+impl core::convert::AsRef<str> for radroots_nostr::blossom::AuthorizationHeader
+pub fn radroots_nostr::blossom::AuthorizationHeader::as_ref(&self) -> &str
+impl core::fmt::Debug for radroots_nostr::blossom::AuthorizationHeader
+pub fn radroots_nostr::blossom::AuthorizationHeader::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_nostr::blossom::SignedAuthorization
+impl radroots_nostr::blossom::SignedAuthorization
+pub fn radroots_nostr::blossom::SignedAuthorization::author(&self) -> nostr::key::public_key::PublicKey
+pub fn radroots_nostr::blossom::SignedAuthorization::created_at(&self) -> radroots_nostr::event::Timestamp
+pub fn radroots_nostr::blossom::SignedAuthorization::event_id(&self) -> radroots_nostr::event::EventId
+pub fn radroots_nostr::blossom::SignedAuthorization::from_signed_event(&radroots_event::draft::SignedEvent) -> core::result::Result<Self, radroots_nostr::blossom::AuthorizationError>
+impl core::fmt::Debug for radroots_nostr::blossom::SignedAuthorization
+pub fn radroots_nostr::blossom::SignedAuthorization::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_nostr::blossom::VerifiedAuthorization
+impl radroots_nostr::blossom::VerifiedAuthorization
+pub fn radroots_nostr::blossom::VerifiedAuthorization::author(&self) -> nostr::key::public_key::PublicKey
+pub fn radroots_nostr::blossom::VerifiedAuthorization::claim(&self) -> &radroots_blossom::authorization::ValidatedAuthorizationClaim
+pub fn radroots_nostr::blossom::VerifiedAuthorization::created_at(&self) -> radroots_nostr::event::Timestamp
+pub fn radroots_nostr::blossom::VerifiedAuthorization::event_id(&self) -> radroots_nostr::event::EventId
+impl core::fmt::Debug for radroots_nostr::blossom::VerifiedAuthorization
+pub fn radroots_nostr::blossom::VerifiedAuthorization::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub fn radroots_nostr::blossom::decode_verify_authorization_header(&str, &radroots_blossom::authorization::AuthorizationValidation) -> core::result::Result<radroots_nostr::blossom::VerifiedAuthorization, radroots_nostr::blossom::AuthorizationError>
+pub fn radroots_nostr::blossom::encode_authorization_header(&radroots_nostr::blossom::SignedAuthorization) -> radroots_nostr::blossom::AuthorizationHeader
+pub fn radroots_nostr::blossom::encode_signed_event_authorization_header(&radroots_event::draft::SignedEvent) -> core::result::Result<radroots_nostr::blossom::AuthorizationHeader, radroots_nostr::blossom::AuthorizationError>
+pub fn radroots_nostr::blossom::sign_authorization(&nostr::key::Keys, &radroots_blossom::authorization::AuthoredUploadClaim) -> core::result::Result<radroots_nostr::blossom::SignedAuthorization, radroots_nostr::blossom::AuthorizationError>
+pub mod radroots_nostr::event
+pub enum radroots_nostr::event::Verification
+pub radroots_nostr::event::Verification::IdMismatch
+pub radroots_nostr::event::Verification::IdVerified
+pub radroots_nostr::event::Verification::MalformedEnvelope
+pub radroots_nostr::event::Verification::SignatureInvalid
+pub radroots_nostr::event::Verification::Verified
+pub struct radroots_nostr::event::ApplicationHandlerSpec
+impl radroots_nostr::event::ApplicationHandlerSpec
+pub fn radroots_nostr::event::ApplicationHandlerSpec::extra_tags(&self) -> &[alloc::vec::Vec<alloc::string::String>]
+pub fn radroots_nostr::event::ApplicationHandlerSpec::identifier(&self) -> core::option::Option<&str>
+pub fn radroots_nostr::event::ApplicationHandlerSpec::kinds(&self) -> &[u32]
+pub fn radroots_nostr::event::ApplicationHandlerSpec::metadata(&self) -> core::option::Option<&radroots_nostr::event::Metadata>
+pub fn radroots_nostr::event::ApplicationHandlerSpec::new(alloc::vec::Vec<u32>) -> Self
+pub fn radroots_nostr::event::ApplicationHandlerSpec::nostr_connect_url(&self) -> core::option::Option<&str>
+pub fn radroots_nostr::event::ApplicationHandlerSpec::relays(&self) -> &[alloc::string::String]
+pub fn radroots_nostr::event::ApplicationHandlerSpec::with_extra_tags(self, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> Self
+pub fn radroots_nostr::event::ApplicationHandlerSpec::with_identifier(self, impl core::convert::Into<alloc::string::String>) -> Self
+pub fn radroots_nostr::event::ApplicationHandlerSpec::with_metadata(self, radroots_nostr::event::Metadata) -> Self
+pub fn radroots_nostr::event::ApplicationHandlerSpec::with_nostr_connect_url(self, impl core::convert::Into<alloc::string::String>) -> Self
+pub fn radroots_nostr::event::ApplicationHandlerSpec::with_relays(self, alloc::vec::Vec<alloc::string::String>) -> Self
+pub struct radroots_nostr::event::CalendarEventBuilder
+impl radroots_nostr::event::CalendarEventBuilder
+pub fn radroots_nostr::event::CalendarEventBuilder::custom_created_at(self, radroots_nostr::event::Timestamp) -> Self
+pub fn radroots_nostr::event::CalendarEventBuilder::into_external_signing_request(self, nostr::key::public_key::PublicKey) -> core::result::Result<radroots_nostr::event::ExternalSigningRequest, radroots_nostr::Error>
+pub fn radroots_nostr::event::CalendarEventBuilder::sign_with_keys(self, &nostr::key::Keys) -> core::result::Result<radroots_nostr::event::Event, radroots_nostr::Error>
+pub struct radroots_nostr::event::EventAdapter<'a>
+impl<'a> radroots_nostr::event::EventAdapter<'a>
+pub fn radroots_nostr::event::EventAdapter<'a>::new(&'a radroots_nostr::event::Event) -> Self
+impl radroots_event_codec::job::traits::JobEventLike for radroots_nostr::event::EventAdapter<'_>
+pub fn radroots_nostr::event::EventAdapter<'_>::raw_author(&self) -> alloc::string::String
+pub fn radroots_nostr::event::EventAdapter<'_>::raw_content(&self) -> alloc::string::String
+pub fn radroots_nostr::event::EventAdapter<'_>::raw_id(&self) -> alloc::string::String
+pub fn radroots_nostr::event::EventAdapter<'_>::raw_kind(&self) -> u32
+pub fn radroots_nostr::event::EventAdapter<'_>::raw_published_at(&self) -> u64
+pub fn radroots_nostr::event::EventAdapter<'_>::raw_sig(&self) -> alloc::string::String
+pub fn radroots_nostr::event::EventAdapter<'_>::raw_tags(&self) -> alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>
+impl<'a> radroots_event_codec::job::traits::JobEventBorrow<'a> for radroots_nostr::event::EventAdapter<'a>
+pub fn radroots_nostr::event::EventAdapter<'a>::raw_author(&'a self) -> alloc::string::String
+pub fn radroots_nostr::event::EventAdapter<'a>::raw_content(&'a self) -> &'a str
+pub fn radroots_nostr::event::EventAdapter<'a>::raw_id(&'a self) -> alloc::string::String
+pub fn radroots_nostr::event::EventAdapter<'a>::raw_kind(&'a self) -> u32
+pub struct radroots_nostr::event::ExternalSigningRequest
+impl radroots_nostr::event::ExternalSigningRequest
+pub const fn radroots_nostr::event::ExternalSigningRequest::authored_plan(&self) -> core::option::Option<&radroots_event_codec::authoring::AuthoredEventPlan>
+pub fn radroots_nostr::event::ExternalSigningRequest::complete(self, radroots_nostr::event::Event) -> core::result::Result<radroots_nostr::event::Event, radroots_nostr::Error>
+pub fn radroots_nostr::event::ExternalSigningRequest::expected_event_id(&self) -> radroots_nostr::event::EventId
+pub fn radroots_nostr::event::ExternalSigningRequest::expected_public_key(&self) -> nostr::key::public_key::PublicKey
+pub fn radroots_nostr::event::ExternalSigningRequest::from_authored_plan(radroots_event_codec::authoring::AuthoredEventPlan) -> core::result::Result<Self, radroots_nostr::Error>
+impl serde_core::ser::Serialize for radroots_nostr::event::ExternalSigningRequest
+pub fn radroots_nostr::event::ExternalSigningRequest::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
+pub struct radroots_nostr::event::FoodAvailabilityBuilder
+impl radroots_nostr::event::FoodAvailabilityBuilder
+pub fn radroots_nostr::event::FoodAvailabilityBuilder::into_external_signing_request(self, nostr::key::public_key::PublicKey) -> core::result::Result<radroots_nostr::event::ExternalSigningRequest, radroots_nostr::Error>
+pub fn radroots_nostr::event::FoodAvailabilityBuilder::sign_with_keys(self, &nostr::key::Keys) -> core::result::Result<radroots_nostr::event::Event, radroots_nostr::Error>
+pub struct radroots_nostr::event::GenericBuilder
+impl radroots_nostr::event::GenericBuilder
+pub fn radroots_nostr::event::GenericBuilder::allow_self_tagging(self) -> Self
+pub fn radroots_nostr::event::GenericBuilder::custom_created_at(self, radroots_nostr::event::Timestamp) -> Self
+pub fn radroots_nostr::event::GenericBuilder::dedup_tags(self) -> Self
+pub fn radroots_nostr::event::GenericBuilder::into_external_signing_request(self, nostr::key::public_key::PublicKey) -> core::result::Result<radroots_nostr::event::ExternalSigningRequest, radroots_nostr::Error>
+pub fn radroots_nostr::event::GenericBuilder::new(radroots_nostr::event::Kind, impl core::convert::Into<alloc::string::String>) -> Self
+pub fn radroots_nostr::event::GenericBuilder::pow(self, u8) -> Self
+pub fn radroots_nostr::event::GenericBuilder::sign_with_keys(self, &nostr::key::Keys) -> core::result::Result<radroots_nostr::event::Event, radroots_nostr::Error>
+pub fn radroots_nostr::event::GenericBuilder::tag(self, radroots_nostr::tag::Tag) -> Self
+pub fn radroots_nostr::event::GenericBuilder::tags<I>(self, I) -> Self where I: core::iter::traits::collect::IntoIterator<Item = radroots_nostr::tag::Tag>
+pub fn radroots_nostr::event::GenericBuilder::text_note(impl core::convert::Into<alloc::string::String>) -> Self
+pub struct radroots_nostr::event::Nip09DeletionRequestBuilder
+impl radroots_nostr::event::Nip09DeletionRequestBuilder
+pub fn radroots_nostr::event::Nip09DeletionRequestBuilder::custom_created_at(self, radroots_nostr::event::Timestamp) -> Self
+pub fn radroots_nostr::event::Nip09DeletionRequestBuilder::into_external_signing_request(self, nostr::key::public_key::PublicKey) -> core::result::Result<radroots_nostr::event::ExternalSigningRequest, radroots_nostr::Error>
+pub fn radroots_nostr::event::Nip09DeletionRequestBuilder::sign_with_keys(self, &nostr::key::Keys) -> core::result::Result<radroots_nostr::event::Event, radroots_nostr::Error>
+pub struct radroots_nostr::event::Nip10ReplyBuilder
+impl radroots_nostr::event::Nip10ReplyBuilder
+pub fn radroots_nostr::event::Nip10ReplyBuilder::custom_created_at(self, radroots_nostr::event::Timestamp) -> Self
+pub fn radroots_nostr::event::Nip10ReplyBuilder::into_external_signing_request(self, nostr::key::public_key::PublicKey) -> core::result::Result<radroots_nostr::event::ExternalSigningRequest, radroots_nostr::Error>
+pub fn radroots_nostr::event::Nip10ReplyBuilder::sign_with_keys(self, &nostr::key::Keys) -> core::result::Result<radroots_nostr::event::Event, radroots_nostr::Error>
+pub struct radroots_nostr::event::Nip22CommentBuilder
+impl radroots_nostr::event::Nip22CommentBuilder
+pub fn radroots_nostr::event::Nip22CommentBuilder::custom_created_at(self, radroots_nostr::event::Timestamp) -> Self
+pub fn radroots_nostr::event::Nip22CommentBuilder::into_external_signing_request(self, nostr::key::public_key::PublicKey) -> core::result::Result<radroots_nostr::event::ExternalSigningRequest, radroots_nostr::Error>
+pub fn radroots_nostr::event::Nip22CommentBuilder::sign_with_keys(self, &nostr::key::Keys) -> core::result::Result<radroots_nostr::event::Event, radroots_nostr::Error>
+pub struct radroots_nostr::event::PostBuilder
+impl radroots_nostr::event::PostBuilder
+pub fn radroots_nostr::event::PostBuilder::custom_created_at(self, radroots_nostr::event::Timestamp) -> Self
+pub fn radroots_nostr::event::PostBuilder::into_external_signing_request(self, nostr::key::public_key::PublicKey) -> core::result::Result<radroots_nostr::event::ExternalSigningRequest, radroots_nostr::Error>
+pub fn radroots_nostr::event::PostBuilder::sign_with_keys(self, &nostr::key::Keys) -> core::result::Result<radroots_nostr::event::Event, radroots_nostr::Error>
+pub struct radroots_nostr::event::ProfileBuilder
+impl radroots_nostr::event::ProfileBuilder
+pub fn radroots_nostr::event::ProfileBuilder::custom_created_at(self, radroots_nostr::event::Timestamp) -> Self
+pub fn radroots_nostr::event::ProfileBuilder::into_external_signing_request(self, nostr::key::public_key::PublicKey) -> core::result::Result<radroots_nostr::event::ExternalSigningRequest, radroots_nostr::Error>
+pub fn radroots_nostr::event::ProfileBuilder::sign_with_keys(self, &nostr::key::Keys) -> core::result::Result<radroots_nostr::event::Event, radroots_nostr::Error>
+pub struct radroots_nostr::event::SignatureVerifier
+impl radroots_event::verification::SignatureVerifier for radroots_nostr::event::SignatureVerifier
+pub fn radroots_nostr::event::SignatureVerifier::verify_signature(&self, &radroots_event::envelope::EventEnvelope) -> core::result::Result<(), radroots_event::verification::Error>
+pub fn radroots_nostr::event::build_application_handler(&radroots_nostr::event::ApplicationHandlerSpec) -> core::result::Result<radroots_nostr::event::GenericBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_ask(&radroots_event::post::AuthoredAsk) -> core::result::Result<radroots_nostr::event::PostBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_calendar_date(&radroots_event::calendar::AuthoredCalendarDateEvent) -> core::result::Result<radroots_nostr::event::CalendarEventBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_calendar_time(&radroots_event::calendar::AuthoredCalendarTimeEvent) -> core::result::Result<radroots_nostr::event::CalendarEventBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_food_availability(&radroots_event::food::availability::FoodAvailabilityDetails, radroots_nostr::event::Timestamp) -> core::result::Result<radroots_nostr::event::FoodAvailabilityBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_job_feedback(&radroots_nostr::event::Event, &str, core::option::Option<alloc::string::String>, core::option::Option<alloc::vec::Vec<radroots_nostr::tag::Tag>>) -> core::result::Result<radroots_nostr::event::GenericBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_job_result(&radroots_nostr::event::Event, impl core::convert::Into<alloc::string::String>, u64, core::option::Option<alloc::string::String>, core::option::Option<alloc::vec::Vec<radroots_nostr::tag::Tag>>) -> core::result::Result<radroots_nostr::event::GenericBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_nip09_deletion_request(&radroots_event::post::deletion::AuthoredNip09DeletionRequest) -> core::result::Result<radroots_nostr::event::Nip09DeletionRequestBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_nip10_reply(&radroots_event::post::reply::AuthoredNip10Reply) -> core::result::Result<radroots_nostr::event::Nip10ReplyBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_nip22_comment(&radroots_event::post::comment::AuthoredNip22Comment) -> core::result::Result<radroots_nostr::event::Nip22CommentBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_photo_update(&radroots_event::post::AuthoredPhotoUpdate) -> core::result::Result<radroots_nostr::event::PostBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_profile(&radroots_event::profile::AuthoredProfile) -> core::result::Result<radroots_nostr::event::ProfileBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::build_update(&radroots_event::post::AuthoredUpdate) -> core::result::Result<radroots_nostr::event::PostBuilder, radroots_nostr::Error>
+pub fn radroots_nostr::event::coordinate_from_nostr(&radroots_nostr::event::Coordinate) -> core::result::Result<radroots_event::id::Nip01Coordinate, radroots_nostr::Error>
+pub fn radroots_nostr::event::coordinate_to_nostr(&radroots_event::id::Nip01Coordinate) -> core::result::Result<radroots_nostr::event::Coordinate, radroots_nostr::Error>
+pub fn radroots_nostr::event::created_at_u32_saturating(radroots_nostr::event::Timestamp) -> u32
+pub fn radroots_nostr::event::event_created_at_u32_saturating(&radroots_nostr::event::Event) -> u32
+pub fn radroots_nostr::event::from_nostr(&radroots_nostr::event::Event) -> core::result::Result<radroots_event::envelope::EventEnvelope, radroots_event::envelope::EventEnvelopeError>
+pub fn radroots_nostr::event::metadata_has_fields(&radroots_nostr::event::Metadata) -> bool
+pub fn radroots_nostr::event::pointer_from_nostr(&radroots_nostr::event::Event) -> radroots_event::tag::EventPtr
+pub fn radroots_nostr::event::post_filter(core::option::Option<u16>, core::option::Option<u64>) -> radroots_nostr::filter::Filter
+pub fn radroots_nostr::event::to_job_feedback_index(&radroots_nostr::event::Event) -> core::result::Result<radroots_event_codec::parsed::RadrootsParsedEvent<radroots_event::social::job_feedback::JobFeedback>, radroots_event_codec::job::error::JobParseError>
+pub fn radroots_nostr::event::to_job_feedback_metadata(&radroots_nostr::event::Event) -> core::result::Result<radroots_event_codec::parsed::RadrootsParsedData<radroots_event::social::job_feedback::JobFeedback>, radroots_event_codec::job::error::JobParseError>
+pub fn radroots_nostr::event::to_job_request_index(&radroots_nostr::event::Event) -> core::result::Result<radroots_event_codec::parsed::RadrootsParsedEvent<radroots_event::social::job_request::JobRequest>, radroots_event_codec::job::error::JobParseError>
+pub fn radroots_nostr::event::to_job_request_metadata(&radroots_nostr::event::Event) -> core::result::Result<radroots_event_codec::parsed::RadrootsParsedData<radroots_event::social::job_request::JobRequest>, radroots_event_codec::job::error::JobParseError>
+pub fn radroots_nostr::event::to_job_result_index(&radroots_nostr::event::Event) -> core::result::Result<radroots_event_codec::parsed::RadrootsParsedEvent<radroots_event::social::job_result::JobResult>, radroots_event_codec::job::error::JobParseError>
+pub fn radroots_nostr::event::to_job_result_metadata(&radroots_nostr::event::Event) -> core::result::Result<radroots_event_codec::parsed::RadrootsParsedData<radroots_event::social::job_result::JobResult>, radroots_event_codec::job::error::JobParseError>
+pub fn radroots_nostr::event::to_nostr(&radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_nostr::event::Event, radroots_nostr::Error>
+pub fn radroots_nostr::event::verify(&radroots_event::envelope::EventEnvelope) -> radroots_nostr::event::Verification
+pub fn radroots_nostr::event::verify_id(&radroots_event::envelope::EventEnvelope) -> radroots_nostr::event::Verification
+pub type radroots_nostr::event::Coordinate = nostr::nips::nip01::Coordinate
+pub type radroots_nostr::event::Event = nostr::event::Event
+pub type radroots_nostr::event::EventId = nostr::event::id::EventId
+pub type radroots_nostr::event::Kind = nostr::event::kind::Kind
+pub type radroots_nostr::event::Metadata = nostr::nips::nip01::Metadata
+pub type radroots_nostr::event::Timestamp = nostr::types::time::Timestamp
+pub mod radroots_nostr::filter
+pub fn radroots_nostr::filter::for_kind(u16) -> radroots_nostr::filter::Filter
+pub fn radroots_nostr::filter::kind(u16) -> radroots_nostr::event::Kind
+pub fn radroots_nostr::filter::since_now(radroots_nostr::filter::Filter) -> radroots_nostr::filter::Filter
+pub fn radroots_nostr::filter::with_tag(radroots_nostr::filter::Filter, &str, alloc::vec::Vec<alloc::string::String>) -> core::result::Result<radroots_nostr::filter::Filter, radroots_nostr::Error>
+pub type radroots_nostr::filter::Filter = nostr::filter::Filter
+pub mod radroots_nostr::key
+pub enum radroots_nostr::key::Nip49KeySecurity
+pub radroots_nostr::key::Nip49KeySecurity::Medium
+pub radroots_nostr::key::Nip49KeySecurity::Unknown
+pub radroots_nostr::key::Nip49KeySecurity::Weak
+impl core::convert::From<radroots_nostr::key::Nip49KeySecurity> for nostr::nips::nip49::KeySecurity
+pub fn nostr::nips::nip49::KeySecurity::from(radroots_nostr::key::Nip49KeySecurity) -> Self
+pub struct radroots_nostr::key::Nip49Options
+impl radroots_nostr::key::Nip49Options
+pub const fn radroots_nostr::key::Nip49Options::key_security(self) -> radroots_nostr::key::Nip49KeySecurity
+pub const fn radroots_nostr::key::Nip49Options::log_n(self) -> u8
+pub const fn radroots_nostr::key::Nip49Options::new(u8, radroots_nostr::key::Nip49KeySecurity) -> Self
+impl core::default::Default for radroots_nostr::key::Nip49Options
+pub fn radroots_nostr::key::Nip49Options::default() -> Self
+pub struct radroots_nostr::key::SecretKey
+impl radroots_nostr::key::SecretKey
+pub fn radroots_nostr::key::SecretKey::generate() -> Self
+pub fn radroots_nostr::key::SecretKey::parse(&str) -> core::result::Result<Self, radroots_nostr::Error>
+pub fn radroots_nostr::key::SecretKey::public_key(&self) -> core::result::Result<radroots_identity::key::PublicKey, radroots_nostr::Error>
+impl core::fmt::Debug for radroots_nostr::key::SecretKey
+pub fn radroots_nostr::key::SecretKey::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub fn radroots_nostr::key::decrypt_secret_key_nip49(&str, &str) -> core::result::Result<radroots_nostr::key::SecretKey, radroots_nostr::Error>
+pub fn radroots_nostr::key::encrypt_secret_key_nip49(&radroots_nostr::key::SecretKey, &str) -> core::result::Result<alloc::string::String, radroots_nostr::Error>
+pub fn radroots_nostr::key::encrypt_secret_key_nip49_with_options(&radroots_nostr::key::SecretKey, &str, radroots_nostr::key::Nip49Options) -> core::result::Result<alloc::string::String, radroots_nostr::Error>
+pub fn radroots_nostr::key::parse_public_key(&str) -> core::result::Result<radroots_identity::key::PublicKey, radroots_nostr::Error>
+pub fn radroots_nostr::key::parse_secret_key(&str) -> core::result::Result<radroots_nostr::key::SecretKey, radroots_nostr::Error>
+pub fn radroots_nostr::key::public_key_from_nostr(nostr::key::public_key::PublicKey) -> core::result::Result<radroots_identity::key::PublicKey, radroots_nostr::Error>
+pub fn radroots_nostr::key::public_key_from_npub(&str) -> core::result::Result<radroots_identity::key::PublicKey, radroots_nostr::Error>
+pub fn radroots_nostr::key::public_key_to_nostr(radroots_identity::key::PublicKey) -> core::result::Result<nostr::key::public_key::PublicKey, radroots_nostr::Error>
+pub fn radroots_nostr::key::public_key_to_npub(radroots_identity::key::PublicKey) -> core::result::Result<alloc::string::String, radroots_nostr::Error>
+pub fn radroots_nostr::key::secret_key_to_nsec(&radroots_nostr::key::SecretKey) -> alloc::string::String
+pub mod radroots_nostr::nip17
+#[non_exhaustive] pub enum radroots_nostr::nip17::Error
+pub radroots_nostr::nip17::Error::GiftWrap
+pub radroots_nostr::nip17::Error::InvalidRecipient
+pub radroots_nostr::nip17::Error::MessageDecode
+pub radroots_nostr::nip17::Error::MessageEncode
+pub radroots_nostr::nip17::Error::Signer
+pub radroots_nostr::nip17::Error::UnsupportedRumorKind
+pub radroots_nostr::nip17::Error::UnsupportedRumorKind::kind: u32
+impl radroots_nostr::nip17::Error
+pub const fn radroots_nostr::nip17::Error::code(&self) -> &'static str
+impl core::convert::From<nostr::event::builder::Error> for radroots_nostr::nip17::Error
+pub fn radroots_nostr::nip17::Error::from(nostr::event::builder::Error) -> Self
+impl core::convert::From<nostr::key::Error> for radroots_nostr::nip17::Error
+pub fn radroots_nostr::nip17::Error::from(nostr::key::Error) -> Self
+impl core::convert::From<nostr::nips::nip59::Error> for radroots_nostr::nip17::Error
+pub fn radroots_nostr::nip17::Error::from(nostr::nips::nip59::Error) -> Self
+impl core::convert::From<nostr::signer::SignerError> for radroots_nostr::nip17::Error
+pub fn radroots_nostr::nip17::Error::from(nostr::signer::SignerError) -> Self
+impl core::convert::From<radroots_event_codec::error::EventEncodeError> for radroots_nostr::nip17::Error
+pub fn radroots_nostr::nip17::Error::from(radroots_event_codec::error::EventEncodeError) -> Self
+impl core::convert::From<radroots_event_codec::error::EventParseError> for radroots_nostr::nip17::Error
+pub fn radroots_nostr::nip17::Error::from(radroots_event_codec::error::EventParseError) -> Self
+impl core::error::Error for radroots_nostr::nip17::Error
+impl core::fmt::Display for radroots_nostr::nip17::Error
+pub fn radroots_nostr::nip17::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_nostr::nip17::Rumor
+pub radroots_nostr::nip17::Rumor::Message(radroots_event_codec::parsed::RadrootsParsedData<radroots_event::social::message::Message>)
+pub radroots_nostr::nip17::Rumor::MessageFile(alloc::boxed::Box<radroots_event_codec::parsed::RadrootsParsedData<radroots_event::social::message_file::MessageFile>>)
+impl core::fmt::Debug for radroots_nostr::nip17::Rumor
+pub fn radroots_nostr::nip17::Rumor::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_nostr::nip17::WrapOptions
+impl radroots_nostr::nip17::WrapOptions
+pub fn radroots_nostr::nip17::WrapOptions::gift_wrap_tags(&self) -> &[alloc::vec::Vec<alloc::string::String>]
+pub fn radroots_nostr::nip17::WrapOptions::include_sender(self, bool) -> Self
+pub const fn radroots_nostr::nip17::WrapOptions::includes_sender(&self) -> bool
+pub const fn radroots_nostr::nip17::WrapOptions::rumor_created_at(&self) -> core::option::Option<u64>
+pub fn radroots_nostr::nip17::WrapOptions::with_gift_wrap_tags(self, alloc::vec::Vec<alloc::vec::Vec<alloc::string::String>>) -> Self
+pub fn radroots_nostr::nip17::WrapOptions::with_rumor_created_at(self, u64) -> Self
+impl core::default::Default for radroots_nostr::nip17::WrapOptions
+pub fn radroots_nostr::nip17::WrapOptions::default() -> Self
+pub async fn radroots_nostr::nip17::unwrap_gift_wrap<T>(&T, &nostr::event::Event) -> core::result::Result<radroots_nostr::nip17::Rumor, radroots_nostr::nip17::Error> where T: nostr::signer::NostrSigner
+pub async fn radroots_nostr::nip17::wrap_message<T>(&T, &radroots_event::social::message::Message, radroots_nostr::nip17::WrapOptions) -> core::result::Result<alloc::vec::Vec<nostr::event::Event>, radroots_nostr::nip17::Error> where T: nostr::signer::NostrSigner
+pub async fn radroots_nostr::nip17::wrap_message_file<T>(&T, &radroots_event::social::message_file::MessageFile, radroots_nostr::nip17::WrapOptions) -> core::result::Result<alloc::vec::Vec<nostr::event::Event>, radroots_nostr::nip17::Error> where T: nostr::signer::NostrSigner
+pub mod radroots_nostr::signing
+pub struct radroots_nostr::signing::LocalSigner
+impl radroots_nostr::signing::LocalSigner
+pub fn radroots_nostr::signing::LocalSigner::generate() -> core::result::Result<Self, radroots_nostr::Error>
+pub fn radroots_nostr::signing::LocalSigner::new(radroots_nostr::key::SecretKey) -> core::result::Result<Self, radroots_nostr::Error>
+pub const fn radroots_nostr::signing::LocalSigner::public_key(&self) -> radroots_identity::key::PublicKey
+impl core::fmt::Debug for radroots_nostr::signing::LocalSigner
+pub fn radroots_nostr::signing::LocalSigner::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl radroots_signing::signer::Signer for radroots_nostr::signing::LocalSigner
+pub fn radroots_nostr::signing::LocalSigner::sign(&self, radroots_signing::request::SignRequest) -> radroots_signing::signer::BoxFuture<'_, core::result::Result<radroots_signing::receipt::SignReceipt, radroots_signing::error::Error>>
+pub fn radroots_nostr::signing::LocalSigner::status(&self) -> radroots_signing::signer::BoxFuture<'_, core::result::Result<radroots_signing::status::SignerStatus, radroots_signing::error::Error>>
+pub mod radroots_nostr::tag
+pub enum radroots_nostr::tag::ResolveError
+pub radroots_nostr::tag::ResolveError::DecryptionError(alloc::string::String)
+pub radroots_nostr::tag::ResolveError::MissingPTag(alloc::boxed::Box<nostr::event::Event>)
+pub radroots_nostr::tag::ResolveError::NotRecipient
+pub radroots_nostr::tag::ResolveError::ParseError(serde_json::error::Error)
+pub fn radroots_nostr::tag::first_value(&radroots_nostr::tag::Tag, &str) -> core::option::Option<alloc::string::String>
+pub fn radroots_nostr::tag::from_parts(alloc::vec::Vec<alloc::string::String>) -> core::result::Result<radroots_nostr::tag::Tag, radroots_nostr::Error>
+pub fn radroots_nostr::tag::match_geohash(&radroots_nostr::tag::Tag) -> core::option::Option<alloc::string::String>
+pub fn radroots_nostr::tag::match_location(&radroots_nostr::tag::Tag) -> core::option::Option<(&str, &str, &str)>
+pub fn radroots_nostr::tag::match_location_coordinate(&radroots_nostr::tag::Tag) -> core::option::Option<(&str, f64)>
+pub fn radroots_nostr::tag::match_parts(&radroots_nostr::tag::Tag) -> core::option::Option<(&str, &[alloc::string::String])>
+pub fn radroots_nostr::tag::match_summary(&radroots_nostr::tag::Tag) -> core::option::Option<alloc::string::String>
+pub fn radroots_nostr::tag::match_title(&radroots_nostr::tag::Tag) -> core::option::Option<alloc::string::String>
+pub fn radroots_nostr::tag::relay_urls(&radroots_nostr::tag::Tag) -> core::option::Option<&alloc::vec::Vec<nostr::types::url::RelayUrl>>
+pub fn radroots_nostr::tag::resolve(&radroots_nostr::event::Event, &nostr::key::Keys) -> core::result::Result<alloc::vec::Vec<radroots_nostr::tag::Tag>, radroots_nostr::tag::ResolveError>
+pub fn radroots_nostr::tag::to_parts(&radroots_nostr::tag::Tag) -> alloc::vec::Vec<alloc::string::String>
+pub fn radroots_nostr::tag::value_at(&radroots_nostr::tag::Tag, usize) -> core::option::Option<alloc::string::String>
+pub fn radroots_nostr::tag::values_from(&radroots_nostr::tag::Tag, usize) -> core::option::Option<alloc::vec::Vec<alloc::string::String>>
+pub type radroots_nostr::tag::Tag = nostr::event::tag::Tag
+pub type radroots_nostr::tag::TagKind<'a> = nostr::event::tag::kind::TagKind<'a>
+pub type radroots_nostr::tag::TagStandard = nostr::event::tag::standard::TagStandard
+pub enum radroots_nostr::Error
+pub radroots_nostr::Error::AuthoredPlan(radroots_event_codec::authoring::typed::AuthoredPlanError)
+pub radroots_nostr::Error::CoordinateConversion
+pub radroots_nostr::Error::DraftError(radroots_event::draft::DraftError)
+pub radroots_nostr::Error::EventBuildError(nostr::event::builder::Error)
+pub radroots_nostr::Error::EventConversion
+pub radroots_nostr::Error::EventConversion::field: &'static str
+pub radroots_nostr::Error::EventError(nostr::event::error::Error)
+pub radroots_nostr::Error::EventWire(radroots_event::wire::v1::EventWireError)
+pub radroots_nostr::Error::ExternalSigningAuthorMismatch
+pub radroots_nostr::Error::ExternalSigningAuthorMismatch::actual: nostr::key::public_key::PublicKey
+pub radroots_nostr::Error::ExternalSigningAuthorMismatch::expected: nostr::key::public_key::PublicKey
+pub radroots_nostr::Error::ExternalSigningEventIdMismatch
+pub radroots_nostr::Error::ExternalSigningEventIdMismatch::actual: nostr::event::id::EventId
+pub radroots_nostr::Error::ExternalSigningEventIdMismatch::expected: nostr::event::id::EventId
+pub radroots_nostr::Error::ExternalSigningEventInvalid(nostr::event::error::Error)
+pub radroots_nostr::Error::ExternalSigningPlanMismatch
+pub radroots_nostr::Error::ExternalSigningPlanMismatch::field: &'static str
+pub radroots_nostr::Error::FilterTagError(alloc::string::String)
+pub radroots_nostr::Error::FoodAvailabilityEncode(radroots_event_codec::food_availability::authored::RadrootsFoodAvailabilityEncodeError)
+pub radroots_nostr::Error::InvalidEncryptedSecretKey
+pub radroots_nostr::Error::InvalidNpub
+pub radroots_nostr::Error::InvalidPublicKey
+pub radroots_nostr::Error::InvalidSecretKey
+pub radroots_nostr::Error::KeyError(nostr::key::Error)
+pub radroots_nostr::Error::KindOutOfRange
+pub radroots_nostr::Error::KindOutOfRange::kind: u32
+pub radroots_nostr::Error::KindOutOfRange::max: u16
+pub radroots_nostr::Error::ProfileEncode(radroots_event_codec::profile::authored::RadrootsAuthoredProfileEncodeError)
+pub radroots_nostr::Error::SecretKeyDecryption
+pub radroots_nostr::Error::SecretKeyEncryption
+pub radroots_nostr::Error::SignedEvent(radroots_event::draft::SignedEventError)
+pub radroots_nostr::Error::TagConversion
+pub radroots_nostr::Error::TypedAuthoringRequired
+pub radroots_nostr::Error::TypedAuthoringRequired::kind: u16
+impl core::convert::From<nostr::event::builder::Error> for radroots_nostr::Error
+pub fn radroots_nostr::Error::from(nostr::event::builder::Error) -> Self
+impl core::convert::From<nostr::event::error::Error> for radroots_nostr::Error
+pub fn radroots_nostr::Error::from(nostr::event::error::Error) -> Self
+impl core::convert::From<nostr::key::Error> for radroots_nostr::Error
+pub fn radroots_nostr::Error::from(nostr::key::Error) -> Self
diff --git a/contracts/api_baselines/radroots_nostr_connect.txt b/contracts/api_baselines/radroots_nostr_connect.txt
@@ -0,0 +1,658 @@
+pub mod radroots_nostr_connect
+pub mod radroots_nostr_connect::client
+pub enum radroots_nostr_connect::client::CancellationPhase
+pub radroots_nostr_connect::client::CancellationPhase::AfterPublication
+pub radroots_nostr_connect::client::CancellationPhase::BeforePublication
+pub enum radroots_nostr_connect::client::Completion
+pub radroots_nostr_connect::client::Completion::Cancelled(radroots_nostr_connect::client::CancellationPhase)
+pub radroots_nostr_connect::client::Completion::Response(alloc::boxed::Box<radroots_nostr_connect::message::Response>)
+impl radroots_nostr_connect::client::Completion
+pub fn radroots_nostr_connect::client::Completion::response(radroots_nostr_connect::message::Response) -> Self
+pub enum radroots_nostr_connect::client::EventOutcome
+pub radroots_nostr_connect::client::EventOutcome::Complete(alloc::boxed::Box<radroots_nostr_connect::message::Response>)
+pub radroots_nostr_connect::client::EventOutcome::Ignore
+pub radroots_nostr_connect::client::EventOutcome::Progress(radroots_nostr_connect::client::Progress)
+pub enum radroots_nostr_connect::client::Progress
+pub radroots_nostr_connect::client::Progress::AuthChallenge
+pub radroots_nostr_connect::client::Progress::AuthChallenge::url: alloc::string::String
+impl core::fmt::Debug for radroots_nostr_connect::client::Progress
+pub fn radroots_nostr_connect::client::Progress::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_nostr_connect::client::Receive
+pub radroots_nostr_connect::client::Receive::Cancelled
+pub radroots_nostr_connect::client::Receive::Event(alloc::boxed::Box<radroots_nostr_connect::client::ClientEvent>)
+pub radroots_nostr_connect::client::Receive::TimedOut
+impl radroots_nostr_connect::client::Receive
+pub fn radroots_nostr_connect::client::Receive::event(radroots_nostr_connect::client::ClientEvent) -> Self
+pub struct radroots_nostr_connect::client::CancellationToken(_)
+impl radroots_nostr_connect::client::CancellationToken
+pub fn radroots_nostr_connect::client::CancellationToken::cancel(&self)
+pub fn radroots_nostr_connect::client::CancellationToken::is_cancelled(&self) -> bool
+pub fn radroots_nostr_connect::client::CancellationToken::new() -> Self
+pub struct radroots_nostr_connect::client::Client
+impl radroots_nostr_connect::client::Client
+pub async fn radroots_nostr_connect::client::Client::execute<T, F>(&self, radroots_nostr_connect::message::RequestId, radroots_nostr_connect::message::Request, &mut T, &radroots_nostr_connect::client::CancellationToken, F) -> core::result::Result<radroots_nostr_connect::client::Completion, radroots_nostr_connect::error::RadrootsNostrConnectError> where T: radroots_nostr_connect::client::Transport + ?core::marker::Sized, F: core::ops::function::FnMut(radroots_nostr_connect::client::Progress) -> core::result::Result<(), radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Client::from_secret(&str, radroots_nostr_connect::client::Target) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Client::generate(radroots_nostr_connect::client::Target) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Client::prepare(&self, radroots_nostr_connect::message::RequestId, radroots_nostr_connect::message::Request) -> core::result::Result<radroots_nostr_connect::client::Operation<'_>, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Client::public_key(&self) -> core::result::Result<radroots_identity::key::PublicKey, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Client::target(&self) -> &radroots_nostr_connect::client::Target
+impl core::fmt::Debug for radroots_nostr_connect::client::Client
+pub fn radroots_nostr_connect::client::Client::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_nostr_connect::client::ClientEvent(_)
+impl radroots_nostr_connect::client::ClientEvent
+pub fn radroots_nostr_connect::client::ClientEvent::as_json(&self) -> alloc::string::String
+pub fn radroots_nostr_connect::client::ClientEvent::from_json(&str) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Debug for radroots_nostr_connect::client::ClientEvent
+pub fn radroots_nostr_connect::client::ClientEvent::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_nostr_connect::client::Operation<'a>
+impl radroots_nostr_connect::client::Operation<'_>
+pub fn radroots_nostr_connect::client::Operation<'_>::cancel(&mut self) -> core::result::Result<radroots_nostr_connect::client::CancellationPhase, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Operation<'_>::mark_published(&mut self) -> core::result::Result<(), radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Operation<'_>::publication(&self) -> core::result::Result<&radroots_nostr_connect::client::ClientEvent, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Operation<'_>::select(&mut self, &radroots_nostr_connect::client::ClientEvent) -> core::result::Result<radroots_nostr_connect::client::EventOutcome, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Debug for radroots_nostr_connect::client::Operation<'_>
+pub fn radroots_nostr_connect::client::Operation<'_>::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_nostr_connect::client::Target
+impl radroots_nostr_connect::client::Target
+pub fn radroots_nostr_connect::client::Target::relays(&self) -> &[radroots_nostr_connect::uri::RelayUrl]
+pub const fn radroots_nostr_connect::client::Target::remote_signer_public_key(&self) -> radroots_identity::key::PublicKey
+pub fn radroots_nostr_connect::client::Target::try_new(radroots_identity::key::PublicKey, alloc::vec::Vec<radroots_nostr_connect::uri::RelayUrl>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub const radroots_nostr_connect::client::CLIENT_EVENT_MAX_BYTES: usize
+pub trait radroots_nostr_connect::client::Transport: core::marker::Send
+pub fn radroots_nostr_connect::client::Transport::publish<'a>(&'a mut self, radroots_nostr_connect::client::ClientEvent) -> radroots_nostr_connect::client::TransportFuture<'a, ()>
+pub fn radroots_nostr_connect::client::Transport::receive<'a>(&'a mut self, &'a radroots_nostr_connect::client::CancellationToken) -> radroots_nostr_connect::client::TransportFuture<'a, radroots_nostr_connect::client::Receive>
+pub type radroots_nostr_connect::client::TransportFuture<'a, T> = core::pin::Pin<alloc::boxed::Box<(dyn core::future::future::Future<Output = core::result::Result<T, radroots_nostr_connect::error::RadrootsNostrConnectError>> + core::marker::Send + 'a)>>
+pub mod radroots_nostr_connect::error
+pub enum radroots_nostr_connect::error::RadrootsNostrConnectError
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::ClientMetadataTooLarge
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::ClientMetadataTooLarge::max: usize
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::ClientMetadataTooLarge::received: usize
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::Decrypt
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::Decrypt::reason: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::Encrypt
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::Encrypt::reason: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidClientEvent
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidClientKey
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidClientMetadata
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidClientMetadata::field: &'static str
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidClientMetadata::reason: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidClientState
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidClientState::reason: &'static str
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidClientTarget
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidClientTarget::reason: &'static str
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidMethod(alloc::string::String)
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidParams
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidParams::expected: &'static str
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidParams::method: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidParams::received: usize
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidPermission(alloc::string::String)
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidPublicKey
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidPublicKey::reason: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidPublicKey::value: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidRelayUrl
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidRelayUrl::reason: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidRelayUrl::value: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidRequestId
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidRequestId::reason: &'static str
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidRequestPayload
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidRequestPayload::method: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidRequestPayload::reason: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidResponseEnvelope
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidResponseEnvelope::reason: &'static str
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidResponsePayload
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidResponsePayload::method: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidResponsePayload::reason: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidServerRequest
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidServerRequest::reason: &'static str
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidServerState
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidServerState::reason: &'static str
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidUri
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidUriScheme(alloc::string::String)
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidUrl
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidUrl::reason: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::InvalidUrl::value: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::Json(alloc::string::String)
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::MissingPublicKey
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::MissingRelay
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::MissingResult
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::MissingSecret
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::ReplayedRequest
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::ReplayedResponse
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::RequestTimedOut
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::Sign
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::Sign::reason: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::Transport
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::Transport::reason: alloc::string::String
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::UnsupportedMethod(radroots_nostr_connect::method::Method)
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::WrongRequestId
+pub radroots_nostr_connect::error::RadrootsNostrConnectError::WrongResponseSigner
+impl core::convert::From<serde_json::error::Error> for radroots_nostr_connect::error::RadrootsNostrConnectError
+pub fn radroots_nostr_connect::error::RadrootsNostrConnectError::from(serde_json::error::Error) -> Self
+pub mod radroots_nostr_connect::message
+pub enum radroots_nostr_connect::message::PendingConnectionOutcome
+pub radroots_nostr_connect::message::PendingConnectionOutcome::Approved(radroots_identity::key::PublicKey)
+pub radroots_nostr_connect::message::PendingConnectionOutcome::ApprovedCapability(radroots_nostr_connect::message::RemoteSessionCapability)
+pub radroots_nostr_connect::message::PendingConnectionOutcome::AuthChallenge
+pub radroots_nostr_connect::message::PendingConnectionOutcome::AuthChallenge::url: alloc::string::String
+pub radroots_nostr_connect::message::PendingConnectionOutcome::PendingApproval
+pub radroots_nostr_connect::message::PendingConnectionOutcome::Rejected
+pub radroots_nostr_connect::message::PendingConnectionOutcome::Rejected::message: alloc::string::String
+pub radroots_nostr_connect::message::PendingConnectionOutcome::UnexpectedResponse
+pub radroots_nostr_connect::message::PendingConnectionOutcome::UnexpectedResponse::response: alloc::string::String
+pub enum radroots_nostr_connect::message::Request
+pub radroots_nostr_connect::message::Request::Connect
+pub radroots_nostr_connect::message::Request::Connect::client_metadata: core::option::Option<radroots_nostr_connect::uri::ClientMetadata>
+pub radroots_nostr_connect::message::Request::Connect::remote_signer_public_key: radroots_identity::key::PublicKey
+pub radroots_nostr_connect::message::Request::Connect::requested_permissions: radroots_nostr_connect::permission::Permissions
+pub radroots_nostr_connect::message::Request::Connect::secret: core::option::Option<alloc::string::String>
+pub radroots_nostr_connect::message::Request::Custom
+pub radroots_nostr_connect::message::Request::Custom::method: radroots_nostr_connect::method::Method
+pub radroots_nostr_connect::message::Request::Custom::params: alloc::vec::Vec<alloc::string::String>
+pub radroots_nostr_connect::message::Request::GetPublicKey
+pub radroots_nostr_connect::message::Request::GetSessionCapability
+pub radroots_nostr_connect::message::Request::Logout
+pub radroots_nostr_connect::message::Request::Nip04Decrypt
+pub radroots_nostr_connect::message::Request::Nip04Decrypt::ciphertext: alloc::string::String
+pub radroots_nostr_connect::message::Request::Nip04Decrypt::public_key: radroots_identity::key::PublicKey
+pub radroots_nostr_connect::message::Request::Nip04Encrypt
+pub radroots_nostr_connect::message::Request::Nip04Encrypt::plaintext: alloc::string::String
+pub radroots_nostr_connect::message::Request::Nip04Encrypt::public_key: radroots_identity::key::PublicKey
+pub radroots_nostr_connect::message::Request::Nip44Decrypt
+pub radroots_nostr_connect::message::Request::Nip44Decrypt::ciphertext: alloc::string::String
+pub radroots_nostr_connect::message::Request::Nip44Decrypt::public_key: radroots_identity::key::PublicKey
+pub radroots_nostr_connect::message::Request::Nip44Encrypt
+pub radroots_nostr_connect::message::Request::Nip44Encrypt::plaintext: alloc::string::String
+pub radroots_nostr_connect::message::Request::Nip44Encrypt::public_key: radroots_identity::key::PublicKey
+pub radroots_nostr_connect::message::Request::Ping
+pub radroots_nostr_connect::message::Request::SignEvent(radroots_nostr_connect::message::UnsignedEvent)
+pub radroots_nostr_connect::message::Request::SwitchRelays
+impl radroots_nostr_connect::message::Request
+pub fn radroots_nostr_connect::message::Request::from_parts(radroots_nostr_connect::method::Method, alloc::vec::Vec<alloc::string::String>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::message::Request::method(&self) -> radroots_nostr_connect::method::Method
+pub fn radroots_nostr_connect::message::Request::to_params(&self) -> core::result::Result<alloc::vec::Vec<alloc::string::String>, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Debug for radroots_nostr_connect::message::Request
+pub fn radroots_nostr_connect::message::Request::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_nostr_connect::message::Response
+pub radroots_nostr_connect::message::Response::AuthUrl(alloc::string::String)
+pub radroots_nostr_connect::message::Response::ConnectAcknowledged
+pub radroots_nostr_connect::message::Response::ConnectSecretEcho(alloc::string::String)
+pub radroots_nostr_connect::message::Response::Custom
+pub radroots_nostr_connect::message::Response::Custom::error: core::option::Option<alloc::string::String>
+pub radroots_nostr_connect::message::Response::Custom::result: core::option::Option<serde_json::value::Value>
+pub radroots_nostr_connect::message::Response::Error
+pub radroots_nostr_connect::message::Response::Error::error: alloc::string::String
+pub radroots_nostr_connect::message::Response::Error::result: core::option::Option<serde_json::value::Value>
+pub radroots_nostr_connect::message::Response::LogoutAcknowledged
+pub radroots_nostr_connect::message::Response::Nip04Decrypt(alloc::string::String)
+pub radroots_nostr_connect::message::Response::Nip04Encrypt(alloc::string::String)
+pub radroots_nostr_connect::message::Response::Nip44Decrypt(alloc::string::String)
+pub radroots_nostr_connect::message::Response::Nip44Encrypt(alloc::string::String)
+pub radroots_nostr_connect::message::Response::PendingConnection
+pub radroots_nostr_connect::message::Response::Pong
+pub radroots_nostr_connect::message::Response::RelayList(alloc::vec::Vec<radroots_nostr_connect::uri::RelayUrl>)
+pub radroots_nostr_connect::message::Response::RelayListUnchanged
+pub radroots_nostr_connect::message::Response::RemoteSessionCapability(radroots_nostr_connect::message::RemoteSessionCapability)
+pub radroots_nostr_connect::message::Response::SignedEvent(radroots_nostr_connect::message::SignedEvent)
+pub radroots_nostr_connect::message::Response::UserPublicKey(radroots_identity::key::PublicKey)
+impl radroots_nostr_connect::message::Response
+pub fn radroots_nostr_connect::message::Response::from_envelope(&radroots_nostr_connect::method::Method, radroots_nostr_connect::message::ResponseEnvelope) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::message::Response::into_envelope(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<radroots_nostr_connect::message::ResponseEnvelope, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::message::Response::into_pending_connection_poll_outcome(self) -> radroots_nostr_connect::message::PendingConnectionOutcome
+impl core::fmt::Debug for radroots_nostr_connect::message::Response
+pub fn radroots_nostr_connect::message::Response::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_nostr_connect::message::RemoteSessionCapability
+impl radroots_nostr_connect::message::RemoteSessionCapability
+pub fn radroots_nostr_connect::message::RemoteSessionCapability::permissions(&self) -> &radroots_nostr_connect::permission::Permissions
+pub fn radroots_nostr_connect::message::RemoteSessionCapability::relays(&self) -> &[radroots_nostr_connect::uri::RelayUrl]
+pub fn radroots_nostr_connect::message::RemoteSessionCapability::try_new(radroots_identity::key::PublicKey, alloc::vec::Vec<radroots_nostr_connect::uri::RelayUrl>, radroots_nostr_connect::permission::Permissions) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub const fn radroots_nostr_connect::message::RemoteSessionCapability::user_public_key(&self) -> radroots_identity::key::PublicKey
+impl serde_core::ser::Serialize for radroots_nostr_connect::message::RemoteSessionCapability
+pub fn radroots_nostr_connect::message::RemoteSessionCapability::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_nostr_connect::message::RemoteSessionCapability
+pub fn radroots_nostr_connect::message::RemoteSessionCapability::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_nostr_connect::message::RequestId(_)
+impl radroots_nostr_connect::message::RequestId
+pub fn radroots_nostr_connect::message::RequestId::as_str(&self) -> &str
+pub fn radroots_nostr_connect::message::RequestId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Display for radroots_nostr_connect::message::RequestId
+pub fn radroots_nostr_connect::message::RequestId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_nostr_connect::message::RequestId
+pub type radroots_nostr_connect::message::RequestId::Err = radroots_nostr_connect::error::RadrootsNostrConnectError
+pub fn radroots_nostr_connect::message::RequestId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_nostr_connect::message::RequestId
+pub fn radroots_nostr_connect::message::RequestId::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_nostr_connect::message::RequestId
+pub fn radroots_nostr_connect::message::RequestId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_nostr_connect::message::RequestMessage
+impl radroots_nostr_connect::message::RequestMessage
+pub fn radroots_nostr_connect::message::RequestMessage::correlate(&self, radroots_nostr_connect::message::ResponseEnvelope) -> core::result::Result<radroots_nostr_connect::message::Response, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::message::RequestMessage::payload(&self) -> &radroots_nostr_connect::message::Request
+pub fn radroots_nostr_connect::message::RequestMessage::request_id(&self) -> core::result::Result<radroots_nostr_connect::message::RequestId, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::message::RequestMessage::try_new(impl core::convert::Into<alloc::string::String>, radroots_nostr_connect::message::Request) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl serde_core::ser::Serialize for radroots_nostr_connect::message::RequestMessage
+pub fn radroots_nostr_connect::message::RequestMessage::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_nostr_connect::message::RequestMessage
+pub fn radroots_nostr_connect::message::RequestMessage::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_nostr_connect::message::ResponseEnvelope
+impl radroots_nostr_connect::message::ResponseEnvelope
+pub fn radroots_nostr_connect::message::ResponseEnvelope::error(&self) -> core::option::Option<&str>
+pub fn radroots_nostr_connect::message::ResponseEnvelope::request_id(&self) -> core::result::Result<radroots_nostr_connect::message::RequestId, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::message::ResponseEnvelope::result(&self) -> core::option::Option<&serde_json::value::Value>
+pub fn radroots_nostr_connect::message::ResponseEnvelope::try_new(impl core::convert::Into<alloc::string::String>, core::option::Option<serde_json::value::Value>, core::option::Option<alloc::string::String>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::message::ResponseEnvelope::validate(&self) -> core::result::Result<(), radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Debug for radroots_nostr_connect::message::ResponseEnvelope
+pub fn radroots_nostr_connect::message::ResponseEnvelope::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_nostr_connect::message::ResponseEnvelope
+pub fn radroots_nostr_connect::message::ResponseEnvelope::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_nostr_connect::message::ResponseEnvelope
+pub fn radroots_nostr_connect::message::ResponseEnvelope::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_nostr_connect::message::ResponseValidator
+impl radroots_nostr_connect::message::ResponseValidator
+pub fn radroots_nostr_connect::message::ResponseValidator::new(radroots_nostr_connect::message::RequestId, radroots_identity::key::PublicKey) -> Self
+pub fn radroots_nostr_connect::message::ResponseValidator::validate(&mut self, radroots_identity::key::PublicKey, impl core::convert::Into<alloc::string::String>, &radroots_nostr_connect::message::ResponseEnvelope) -> core::result::Result<(), radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub struct radroots_nostr_connect::message::SignedEvent(_)
+impl radroots_nostr_connect::message::SignedEvent
+pub fn radroots_nostr_connect::message::SignedEvent::as_json(&self) -> alloc::string::String
+pub fn radroots_nostr_connect::message::SignedEvent::from_json(&str) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Debug for radroots_nostr_connect::message::SignedEvent
+pub fn radroots_nostr_connect::message::SignedEvent::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_nostr_connect::message::UnsignedEvent(_)
+impl radroots_nostr_connect::message::UnsignedEvent
+pub fn radroots_nostr_connect::message::UnsignedEvent::as_json(&self) -> alloc::string::String
+pub fn radroots_nostr_connect::message::UnsignedEvent::from_json(&str) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::message::UnsignedEvent::kind(&self) -> u16
+impl core::fmt::Debug for radroots_nostr_connect::message::UnsignedEvent
+pub fn radroots_nostr_connect::message::UnsignedEvent::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub const radroots_nostr_connect::message::PENDING_CONNECTION_ERROR: &str
+pub const radroots_nostr_connect::message::REMOTE_CAPABILITY_RELAY_COUNT_MAX: usize
+pub const radroots_nostr_connect::message::REQUEST_ID_MAX_BYTES: usize
+pub const radroots_nostr_connect::message::REQUEST_PARAMS_MAX_BYTES: usize
+pub const radroots_nostr_connect::message::REQUEST_PARAM_COUNT_MAX: usize
+pub const radroots_nostr_connect::message::REQUEST_PARAM_MAX_BYTES: usize
+pub const radroots_nostr_connect::message::RESPONSE_ERROR_MAX_BYTES: usize
+pub const radroots_nostr_connect::message::RESPONSE_RESULT_MAX_BYTES: usize
+pub const radroots_nostr_connect::message::RPC_KIND: u16
+pub mod radroots_nostr_connect::method
+pub enum radroots_nostr_connect::method::Method
+pub radroots_nostr_connect::method::Method::Connect
+pub radroots_nostr_connect::method::Method::Custom(radroots_nostr_connect::method::CustomMethod)
+pub radroots_nostr_connect::method::Method::GetPublicKey
+pub radroots_nostr_connect::method::Method::GetSessionCapability
+pub radroots_nostr_connect::method::Method::Logout
+pub radroots_nostr_connect::method::Method::Nip04Decrypt
+pub radroots_nostr_connect::method::Method::Nip04Encrypt
+pub radroots_nostr_connect::method::Method::Nip44Decrypt
+pub radroots_nostr_connect::method::Method::Nip44Encrypt
+pub radroots_nostr_connect::method::Method::Ping
+pub radroots_nostr_connect::method::Method::SignEvent
+pub radroots_nostr_connect::method::Method::SwitchRelays
+impl radroots_nostr_connect::method::Method
+pub fn radroots_nostr_connect::method::Method::as_str(&self) -> &str
+pub fn radroots_nostr_connect::method::Method::custom(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Display for radroots_nostr_connect::method::Method
+pub fn radroots_nostr_connect::method::Method::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_nostr_connect::method::Method
+pub type radroots_nostr_connect::method::Method::Err = radroots_nostr_connect::error::RadrootsNostrConnectError
+pub fn radroots_nostr_connect::method::Method::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_nostr_connect::method::Method
+pub fn radroots_nostr_connect::method::Method::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_nostr_connect::method::Method
+pub fn radroots_nostr_connect::method::Method::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_nostr_connect::method::CustomMethod(_)
+impl radroots_nostr_connect::method::CustomMethod
+pub fn radroots_nostr_connect::method::CustomMethod::as_str(&self) -> &str
+pub const radroots_nostr_connect::method::METHOD_MAX_BYTES: usize
+pub mod radroots_nostr_connect::permission
+pub struct radroots_nostr_connect::permission::Permission
+impl radroots_nostr_connect::permission::Permission
+pub fn radroots_nostr_connect::permission::Permission::matches_request(&self, &radroots_nostr_connect::method::Method, core::option::Option<&str>) -> bool
+pub fn radroots_nostr_connect::permission::Permission::matches_sign_event_kind(&self, u32) -> bool
+pub fn radroots_nostr_connect::permission::Permission::method(&self) -> &radroots_nostr_connect::method::Method
+pub fn radroots_nostr_connect::permission::Permission::new(radroots_nostr_connect::method::Method) -> Self
+pub fn radroots_nostr_connect::permission::Permission::parameter(&self) -> core::option::Option<&str>
+pub fn radroots_nostr_connect::permission::Permission::try_with_parameter(radroots_nostr_connect::method::Method, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Display for radroots_nostr_connect::permission::Permission
+pub fn radroots_nostr_connect::permission::Permission::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_nostr_connect::permission::Permission
+pub type radroots_nostr_connect::permission::Permission::Err = radroots_nostr_connect::error::RadrootsNostrConnectError
+pub fn radroots_nostr_connect::permission::Permission::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub struct radroots_nostr_connect::permission::Permissions(_)
+impl radroots_nostr_connect::permission::Permissions
+pub fn radroots_nostr_connect::permission::Permissions::allows_request(&self, &radroots_nostr_connect::method::Method, core::option::Option<&str>) -> bool
+pub fn radroots_nostr_connect::permission::Permissions::allows_sign_event_kind(&self, u32) -> bool
+pub fn radroots_nostr_connect::permission::Permissions::as_slice(&self) -> &[radroots_nostr_connect::permission::Permission]
+pub fn radroots_nostr_connect::permission::Permissions::into_vec(self) -> alloc::vec::Vec<radroots_nostr_connect::permission::Permission>
+pub fn radroots_nostr_connect::permission::Permissions::is_empty(&self) -> bool
+pub fn radroots_nostr_connect::permission::Permissions::new() -> Self
+pub fn radroots_nostr_connect::permission::Permissions::try_from_vec(alloc::vec::Vec<radroots_nostr_connect::permission::Permission>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::convert::From<alloc::vec::Vec<radroots_nostr_connect::permission::Permission>> for radroots_nostr_connect::permission::Permissions
+pub fn radroots_nostr_connect::permission::Permissions::from(alloc::vec::Vec<radroots_nostr_connect::permission::Permission>) -> Self
+impl core::fmt::Display for radroots_nostr_connect::permission::Permissions
+pub fn radroots_nostr_connect::permission::Permissions::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_nostr_connect::permission::Permissions
+pub type radroots_nostr_connect::permission::Permissions::Err = radroots_nostr_connect::error::RadrootsNostrConnectError
+pub fn radroots_nostr_connect::permission::Permissions::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_nostr_connect::permission::Permissions
+pub fn radroots_nostr_connect::permission::Permissions::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_nostr_connect::permission::Permissions
+pub fn radroots_nostr_connect::permission::Permissions::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub const radroots_nostr_connect::permission::PERMISSIONS_MAX_BYTES: usize
+pub const radroots_nostr_connect::permission::PERMISSION_COUNT_MAX: usize
+pub const radroots_nostr_connect::permission::PERMISSION_PARAMETER_MAX_BYTES: usize
+pub mod radroots_nostr_connect::server
+pub struct radroots_nostr_connect::server::Server
+impl radroots_nostr_connect::server::Server
+pub fn radroots_nostr_connect::server::Server::new() -> Self
+pub fn radroots_nostr_connect::server::Server::parse(&mut self, impl core::convert::Into<alloc::string::String>, &str) -> core::result::Result<radroots_nostr_connect::server::ServerRequest, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::server::Server::with_supported_extensions(impl core::iter::traits::collect::IntoIterator<Item = radroots_nostr_connect::method::Method>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::default::Default for radroots_nostr_connect::server::Server
+pub fn radroots_nostr_connect::server::Server::default() -> Self
+pub struct radroots_nostr_connect::server::ServerRequest
+impl radroots_nostr_connect::server::ServerRequest
+pub fn radroots_nostr_connect::server::ServerRequest::is_allowed_by(&self, &radroots_nostr_connect::permission::Permissions) -> bool
+pub fn radroots_nostr_connect::server::ServerRequest::request(&self) -> &radroots_nostr_connect::message::Request
+pub fn radroots_nostr_connect::server::ServerRequest::request_id(&self) -> &radroots_nostr_connect::message::RequestId
+pub fn radroots_nostr_connect::server::ServerRequest::required_permission(&self) -> core::option::Option<&radroots_nostr_connect::permission::Permission>
+pub fn radroots_nostr_connect::server::ServerRequest::respond(self, radroots_nostr_connect::message::Response) -> core::result::Result<radroots_nostr_connect::server::ServerResponse, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub struct radroots_nostr_connect::server::ServerResponse
+impl radroots_nostr_connect::server::ServerResponse
+pub fn radroots_nostr_connect::server::ServerResponse::as_json(&self) -> &str
+pub fn radroots_nostr_connect::server::ServerResponse::envelope(&self) -> &radroots_nostr_connect::message::ResponseEnvelope
+impl core::fmt::Debug for radroots_nostr_connect::server::ServerResponse
+pub fn radroots_nostr_connect::server::ServerResponse::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub const radroots_nostr_connect::server::SERVER_MESSAGE_MAX_BYTES: usize
+pub const radroots_nostr_connect::server::SERVER_REPLAY_WINDOW_MAX: usize
+pub fn radroots_nostr_connect::server::required_permission(&radroots_nostr_connect::message::Request) -> core::option::Option<radroots_nostr_connect::permission::Permission>
+pub mod radroots_nostr_connect::uri
+pub enum radroots_nostr_connect::uri::Uri
+pub radroots_nostr_connect::uri::Uri::Bunker(radroots_nostr_connect::uri::BunkerUri)
+pub radroots_nostr_connect::uri::Uri::Client(radroots_nostr_connect::uri::ClientUri)
+impl radroots_nostr_connect::uri::Uri
+pub fn radroots_nostr_connect::uri::Uri::parse(&str) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Display for radroots_nostr_connect::uri::Uri
+pub fn radroots_nostr_connect::uri::Uri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_nostr_connect::uri::Uri
+pub type radroots_nostr_connect::uri::Uri::Err = radroots_nostr_connect::error::RadrootsNostrConnectError
+pub fn radroots_nostr_connect::uri::Uri::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_nostr_connect::uri::Uri
+pub fn radroots_nostr_connect::uri::Uri::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_nostr_connect::uri::Uri
+pub fn radroots_nostr_connect::uri::Uri::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_nostr_connect::uri::BunkerUri
+impl radroots_nostr_connect::uri::BunkerUri
+pub fn radroots_nostr_connect::uri::BunkerUri::relays(&self) -> &[radroots_nostr_connect::uri::RelayUrl]
+pub const fn radroots_nostr_connect::uri::BunkerUri::remote_signer_public_key(&self) -> radroots_identity::key::PublicKey
+pub fn radroots_nostr_connect::uri::BunkerUri::secret(&self) -> core::option::Option<&str>
+impl core::fmt::Debug for radroots_nostr_connect::uri::BunkerUri
+pub fn radroots_nostr_connect::uri::BunkerUri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_nostr_connect::uri::BunkerUri
+pub fn radroots_nostr_connect::uri::BunkerUri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_nostr_connect::uri::BunkerUri
+pub fn radroots_nostr_connect::uri::BunkerUri::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_nostr_connect::uri::BunkerUri
+pub fn radroots_nostr_connect::uri::BunkerUri::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_nostr_connect::uri::ClientMetadata
+impl radroots_nostr_connect::uri::ClientMetadata
+pub fn radroots_nostr_connect::uri::ClientMetadata::from_connect_param(&str) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::uri::ClientMetadata::image(&self) -> core::option::Option<&str>
+pub fn radroots_nostr_connect::uri::ClientMetadata::is_display_empty(&self) -> bool
+pub fn radroots_nostr_connect::uri::ClientMetadata::name(&self) -> core::option::Option<&str>
+pub fn radroots_nostr_connect::uri::ClientMetadata::new() -> Self
+pub fn radroots_nostr_connect::uri::ClientMetadata::normalized(self) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::uri::ClientMetadata::requested_permissions(&self) -> &radroots_nostr_connect::permission::Permissions
+pub fn radroots_nostr_connect::uri::ClientMetadata::to_connect_param(&self) -> core::result::Result<alloc::string::String, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::uri::ClientMetadata::url(&self) -> core::option::Option<&str>
+pub fn radroots_nostr_connect::uri::ClientMetadata::with_image(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::uri::ClientMetadata::with_name(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::uri::ClientMetadata::with_requested_permissions(self, radroots_nostr_connect::permission::Permissions) -> Self
+pub fn radroots_nostr_connect::uri::ClientMetadata::with_url(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl serde_core::ser::Serialize for radroots_nostr_connect::uri::ClientMetadata
+pub fn radroots_nostr_connect::uri::ClientMetadata::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_nostr_connect::uri::ClientMetadata
+pub fn radroots_nostr_connect::uri::ClientMetadata::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_nostr_connect::uri::ClientUri
+impl radroots_nostr_connect::uri::ClientUri
+pub const fn radroots_nostr_connect::uri::ClientUri::client_public_key(&self) -> radroots_identity::key::PublicKey
+pub fn radroots_nostr_connect::uri::ClientUri::metadata(&self) -> &radroots_nostr_connect::uri::ClientMetadata
+pub fn radroots_nostr_connect::uri::ClientUri::relays(&self) -> &[radroots_nostr_connect::uri::RelayUrl]
+pub fn radroots_nostr_connect::uri::ClientUri::secret(&self) -> &str
+pub fn radroots_nostr_connect::uri::ClientUri::try_new(radroots_identity::key::PublicKey, impl core::iter::traits::collect::IntoIterator<Item = radroots_nostr_connect::uri::RelayUrl>, impl core::convert::Into<alloc::string::String>, radroots_nostr_connect::uri::ClientMetadata) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Debug for radroots_nostr_connect::uri::ClientUri
+pub fn radroots_nostr_connect::uri::ClientUri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_nostr_connect::uri::ClientUri
+pub fn radroots_nostr_connect::uri::ClientUri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_nostr_connect::uri::ClientUri
+pub fn radroots_nostr_connect::uri::ClientUri::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_nostr_connect::uri::ClientUri
+pub fn radroots_nostr_connect::uri::ClientUri::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_nostr_connect::uri::RelayUrl(_)
+impl radroots_nostr_connect::uri::RelayUrl
+pub fn radroots_nostr_connect::uri::RelayUrl::parse(&str) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Debug for radroots_nostr_connect::uri::RelayUrl
+pub fn radroots_nostr_connect::uri::RelayUrl::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_nostr_connect::uri::RelayUrl
+pub fn radroots_nostr_connect::uri::RelayUrl::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_nostr_connect::uri::RelayUrl
+pub type radroots_nostr_connect::uri::RelayUrl::Err = radroots_nostr_connect::error::RadrootsNostrConnectError
+pub fn radroots_nostr_connect::uri::RelayUrl::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_nostr_connect::uri::RelayUrl
+pub fn radroots_nostr_connect::uri::RelayUrl::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_nostr_connect::uri::RelayUrl
+pub fn radroots_nostr_connect::uri::RelayUrl::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub const radroots_nostr_connect::uri::BUNKER_URI_SCHEME: &str
+pub const radroots_nostr_connect::uri::CLIENT_METADATA_JSON_MAX_BYTES: usize
+pub const radroots_nostr_connect::uri::CLIENT_NAME_MAX_BYTES: usize
+pub const radroots_nostr_connect::uri::CLIENT_URL_MAX_BYTES: usize
+pub const radroots_nostr_connect::uri::RELAY_COUNT_MAX: usize
+pub const radroots_nostr_connect::uri::SECRET_MAX_BYTES: usize
+pub const radroots_nostr_connect::uri::URI_MAX_BYTES: usize
+pub const radroots_nostr_connect::uri::URI_SCHEME: &str
+pub enum radroots_nostr_connect::Error
+pub radroots_nostr_connect::Error::ClientMetadataTooLarge
+pub radroots_nostr_connect::Error::ClientMetadataTooLarge::max: usize
+pub radroots_nostr_connect::Error::ClientMetadataTooLarge::received: usize
+pub radroots_nostr_connect::Error::Decrypt
+pub radroots_nostr_connect::Error::Decrypt::reason: alloc::string::String
+pub radroots_nostr_connect::Error::Encrypt
+pub radroots_nostr_connect::Error::Encrypt::reason: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidClientEvent
+pub radroots_nostr_connect::Error::InvalidClientKey
+pub radroots_nostr_connect::Error::InvalidClientMetadata
+pub radroots_nostr_connect::Error::InvalidClientMetadata::field: &'static str
+pub radroots_nostr_connect::Error::InvalidClientMetadata::reason: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidClientState
+pub radroots_nostr_connect::Error::InvalidClientState::reason: &'static str
+pub radroots_nostr_connect::Error::InvalidClientTarget
+pub radroots_nostr_connect::Error::InvalidClientTarget::reason: &'static str
+pub radroots_nostr_connect::Error::InvalidMethod(alloc::string::String)
+pub radroots_nostr_connect::Error::InvalidParams
+pub radroots_nostr_connect::Error::InvalidParams::expected: &'static str
+pub radroots_nostr_connect::Error::InvalidParams::method: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidParams::received: usize
+pub radroots_nostr_connect::Error::InvalidPermission(alloc::string::String)
+pub radroots_nostr_connect::Error::InvalidPublicKey
+pub radroots_nostr_connect::Error::InvalidPublicKey::reason: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidPublicKey::value: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidRelayUrl
+pub radroots_nostr_connect::Error::InvalidRelayUrl::reason: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidRelayUrl::value: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidRequestId
+pub radroots_nostr_connect::Error::InvalidRequestId::reason: &'static str
+pub radroots_nostr_connect::Error::InvalidRequestPayload
+pub radroots_nostr_connect::Error::InvalidRequestPayload::method: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidRequestPayload::reason: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidResponseEnvelope
+pub radroots_nostr_connect::Error::InvalidResponseEnvelope::reason: &'static str
+pub radroots_nostr_connect::Error::InvalidResponsePayload
+pub radroots_nostr_connect::Error::InvalidResponsePayload::method: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidResponsePayload::reason: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidServerRequest
+pub radroots_nostr_connect::Error::InvalidServerRequest::reason: &'static str
+pub radroots_nostr_connect::Error::InvalidServerState
+pub radroots_nostr_connect::Error::InvalidServerState::reason: &'static str
+pub radroots_nostr_connect::Error::InvalidUri
+pub radroots_nostr_connect::Error::InvalidUriScheme(alloc::string::String)
+pub radroots_nostr_connect::Error::InvalidUrl
+pub radroots_nostr_connect::Error::InvalidUrl::reason: alloc::string::String
+pub radroots_nostr_connect::Error::InvalidUrl::value: alloc::string::String
+pub radroots_nostr_connect::Error::Json(alloc::string::String)
+pub radroots_nostr_connect::Error::MissingPublicKey
+pub radroots_nostr_connect::Error::MissingRelay
+pub radroots_nostr_connect::Error::MissingResult
+pub radroots_nostr_connect::Error::MissingSecret
+pub radroots_nostr_connect::Error::ReplayedRequest
+pub radroots_nostr_connect::Error::ReplayedResponse
+pub radroots_nostr_connect::Error::RequestTimedOut
+pub radroots_nostr_connect::Error::Sign
+pub radroots_nostr_connect::Error::Sign::reason: alloc::string::String
+pub radroots_nostr_connect::Error::Transport
+pub radroots_nostr_connect::Error::Transport::reason: alloc::string::String
+pub radroots_nostr_connect::Error::UnsupportedMethod(radroots_nostr_connect::method::Method)
+pub radroots_nostr_connect::Error::WrongRequestId
+pub radroots_nostr_connect::Error::WrongResponseSigner
+impl core::convert::From<serde_json::error::Error> for radroots_nostr_connect::error::RadrootsNostrConnectError
+pub fn radroots_nostr_connect::error::RadrootsNostrConnectError::from(serde_json::error::Error) -> Self
+pub enum radroots_nostr_connect::Method
+pub radroots_nostr_connect::Method::Connect
+pub radroots_nostr_connect::Method::Custom(radroots_nostr_connect::method::CustomMethod)
+pub radroots_nostr_connect::Method::GetPublicKey
+pub radroots_nostr_connect::Method::GetSessionCapability
+pub radroots_nostr_connect::Method::Logout
+pub radroots_nostr_connect::Method::Nip04Decrypt
+pub radroots_nostr_connect::Method::Nip04Encrypt
+pub radroots_nostr_connect::Method::Nip44Decrypt
+pub radroots_nostr_connect::Method::Nip44Encrypt
+pub radroots_nostr_connect::Method::Ping
+pub radroots_nostr_connect::Method::SignEvent
+pub radroots_nostr_connect::Method::SwitchRelays
+impl radroots_nostr_connect::method::Method
+pub fn radroots_nostr_connect::method::Method::as_str(&self) -> &str
+pub fn radroots_nostr_connect::method::Method::custom(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Display for radroots_nostr_connect::method::Method
+pub fn radroots_nostr_connect::method::Method::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_nostr_connect::method::Method
+pub type radroots_nostr_connect::method::Method::Err = radroots_nostr_connect::error::RadrootsNostrConnectError
+pub fn radroots_nostr_connect::method::Method::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_nostr_connect::method::Method
+pub fn radroots_nostr_connect::method::Method::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_nostr_connect::method::Method
+pub fn radroots_nostr_connect::method::Method::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub enum radroots_nostr_connect::Request
+pub radroots_nostr_connect::Request::Connect
+pub radroots_nostr_connect::Request::Connect::client_metadata: core::option::Option<radroots_nostr_connect::uri::ClientMetadata>
+pub radroots_nostr_connect::Request::Connect::remote_signer_public_key: radroots_identity::key::PublicKey
+pub radroots_nostr_connect::Request::Connect::requested_permissions: radroots_nostr_connect::permission::Permissions
+pub radroots_nostr_connect::Request::Connect::secret: core::option::Option<alloc::string::String>
+pub radroots_nostr_connect::Request::Custom
+pub radroots_nostr_connect::Request::Custom::method: radroots_nostr_connect::method::Method
+pub radroots_nostr_connect::Request::Custom::params: alloc::vec::Vec<alloc::string::String>
+pub radroots_nostr_connect::Request::GetPublicKey
+pub radroots_nostr_connect::Request::GetSessionCapability
+pub radroots_nostr_connect::Request::Logout
+pub radroots_nostr_connect::Request::Nip04Decrypt
+pub radroots_nostr_connect::Request::Nip04Decrypt::ciphertext: alloc::string::String
+pub radroots_nostr_connect::Request::Nip04Decrypt::public_key: radroots_identity::key::PublicKey
+pub radroots_nostr_connect::Request::Nip04Encrypt
+pub radroots_nostr_connect::Request::Nip04Encrypt::plaintext: alloc::string::String
+pub radroots_nostr_connect::Request::Nip04Encrypt::public_key: radroots_identity::key::PublicKey
+pub radroots_nostr_connect::Request::Nip44Decrypt
+pub radroots_nostr_connect::Request::Nip44Decrypt::ciphertext: alloc::string::String
+pub radroots_nostr_connect::Request::Nip44Decrypt::public_key: radroots_identity::key::PublicKey
+pub radroots_nostr_connect::Request::Nip44Encrypt
+pub radroots_nostr_connect::Request::Nip44Encrypt::plaintext: alloc::string::String
+pub radroots_nostr_connect::Request::Nip44Encrypt::public_key: radroots_identity::key::PublicKey
+pub radroots_nostr_connect::Request::Ping
+pub radroots_nostr_connect::Request::SignEvent(radroots_nostr_connect::message::UnsignedEvent)
+pub radroots_nostr_connect::Request::SwitchRelays
+impl radroots_nostr_connect::message::Request
+pub fn radroots_nostr_connect::message::Request::from_parts(radroots_nostr_connect::method::Method, alloc::vec::Vec<alloc::string::String>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::message::Request::method(&self) -> radroots_nostr_connect::method::Method
+pub fn radroots_nostr_connect::message::Request::to_params(&self) -> core::result::Result<alloc::vec::Vec<alloc::string::String>, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Debug for radroots_nostr_connect::message::Request
+pub fn radroots_nostr_connect::message::Request::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_nostr_connect::Response
+pub radroots_nostr_connect::Response::AuthUrl(alloc::string::String)
+pub radroots_nostr_connect::Response::ConnectAcknowledged
+pub radroots_nostr_connect::Response::ConnectSecretEcho(alloc::string::String)
+pub radroots_nostr_connect::Response::Custom
+pub radroots_nostr_connect::Response::Custom::error: core::option::Option<alloc::string::String>
+pub radroots_nostr_connect::Response::Custom::result: core::option::Option<serde_json::value::Value>
+pub radroots_nostr_connect::Response::Error
+pub radroots_nostr_connect::Response::Error::error: alloc::string::String
+pub radroots_nostr_connect::Response::Error::result: core::option::Option<serde_json::value::Value>
+pub radroots_nostr_connect::Response::LogoutAcknowledged
+pub radroots_nostr_connect::Response::Nip04Decrypt(alloc::string::String)
+pub radroots_nostr_connect::Response::Nip04Encrypt(alloc::string::String)
+pub radroots_nostr_connect::Response::Nip44Decrypt(alloc::string::String)
+pub radroots_nostr_connect::Response::Nip44Encrypt(alloc::string::String)
+pub radroots_nostr_connect::Response::PendingConnection
+pub radroots_nostr_connect::Response::Pong
+pub radroots_nostr_connect::Response::RelayList(alloc::vec::Vec<radroots_nostr_connect::uri::RelayUrl>)
+pub radroots_nostr_connect::Response::RelayListUnchanged
+pub radroots_nostr_connect::Response::RemoteSessionCapability(radroots_nostr_connect::message::RemoteSessionCapability)
+pub radroots_nostr_connect::Response::SignedEvent(radroots_nostr_connect::message::SignedEvent)
+pub radroots_nostr_connect::Response::UserPublicKey(radroots_identity::key::PublicKey)
+impl radroots_nostr_connect::message::Response
+pub fn radroots_nostr_connect::message::Response::from_envelope(&radroots_nostr_connect::method::Method, radroots_nostr_connect::message::ResponseEnvelope) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::message::Response::into_envelope(self, impl core::convert::Into<alloc::string::String>) -> core::result::Result<radroots_nostr_connect::message::ResponseEnvelope, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::message::Response::into_pending_connection_poll_outcome(self) -> radroots_nostr_connect::message::PendingConnectionOutcome
+impl core::fmt::Debug for radroots_nostr_connect::message::Response
+pub fn radroots_nostr_connect::message::Response::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_nostr_connect::BunkerUri
+impl radroots_nostr_connect::uri::BunkerUri
+pub fn radroots_nostr_connect::uri::BunkerUri::relays(&self) -> &[radroots_nostr_connect::uri::RelayUrl]
+pub const fn radroots_nostr_connect::uri::BunkerUri::remote_signer_public_key(&self) -> radroots_identity::key::PublicKey
+pub fn radroots_nostr_connect::uri::BunkerUri::secret(&self) -> core::option::Option<&str>
+impl core::fmt::Debug for radroots_nostr_connect::uri::BunkerUri
+pub fn radroots_nostr_connect::uri::BunkerUri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_nostr_connect::uri::BunkerUri
+pub fn radroots_nostr_connect::uri::BunkerUri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_nostr_connect::uri::BunkerUri
+pub fn radroots_nostr_connect::uri::BunkerUri::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_nostr_connect::uri::BunkerUri
+pub fn radroots_nostr_connect::uri::BunkerUri::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_nostr_connect::Client
+impl radroots_nostr_connect::client::Client
+pub async fn radroots_nostr_connect::client::Client::execute<T, F>(&self, radroots_nostr_connect::message::RequestId, radroots_nostr_connect::message::Request, &mut T, &radroots_nostr_connect::client::CancellationToken, F) -> core::result::Result<radroots_nostr_connect::client::Completion, radroots_nostr_connect::error::RadrootsNostrConnectError> where T: radroots_nostr_connect::client::Transport + ?core::marker::Sized, F: core::ops::function::FnMut(radroots_nostr_connect::client::Progress) -> core::result::Result<(), radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Client::from_secret(&str, radroots_nostr_connect::client::Target) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Client::generate(radroots_nostr_connect::client::Target) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Client::prepare(&self, radroots_nostr_connect::message::RequestId, radroots_nostr_connect::message::Request) -> core::result::Result<radroots_nostr_connect::client::Operation<'_>, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Client::public_key(&self) -> core::result::Result<radroots_identity::key::PublicKey, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::client::Client::target(&self) -> &radroots_nostr_connect::client::Target
+impl core::fmt::Debug for radroots_nostr_connect::client::Client
+pub fn radroots_nostr_connect::client::Client::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_nostr_connect::ClientUri
+impl radroots_nostr_connect::uri::ClientUri
+pub const fn radroots_nostr_connect::uri::ClientUri::client_public_key(&self) -> radroots_identity::key::PublicKey
+pub fn radroots_nostr_connect::uri::ClientUri::metadata(&self) -> &radroots_nostr_connect::uri::ClientMetadata
+pub fn radroots_nostr_connect::uri::ClientUri::relays(&self) -> &[radroots_nostr_connect::uri::RelayUrl]
+pub fn radroots_nostr_connect::uri::ClientUri::secret(&self) -> &str
+pub fn radroots_nostr_connect::uri::ClientUri::try_new(radroots_identity::key::PublicKey, impl core::iter::traits::collect::IntoIterator<Item = radroots_nostr_connect::uri::RelayUrl>, impl core::convert::Into<alloc::string::String>, radroots_nostr_connect::uri::ClientMetadata) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Debug for radroots_nostr_connect::uri::ClientUri
+pub fn radroots_nostr_connect::uri::ClientUri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_nostr_connect::uri::ClientUri
+pub fn radroots_nostr_connect::uri::ClientUri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_nostr_connect::uri::ClientUri
+pub fn radroots_nostr_connect::uri::ClientUri::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_nostr_connect::uri::ClientUri
+pub fn radroots_nostr_connect::uri::ClientUri::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_nostr_connect::Permission
+impl radroots_nostr_connect::permission::Permission
+pub fn radroots_nostr_connect::permission::Permission::matches_request(&self, &radroots_nostr_connect::method::Method, core::option::Option<&str>) -> bool
+pub fn radroots_nostr_connect::permission::Permission::matches_sign_event_kind(&self, u32) -> bool
+pub fn radroots_nostr_connect::permission::Permission::method(&self) -> &radroots_nostr_connect::method::Method
+pub fn radroots_nostr_connect::permission::Permission::new(radroots_nostr_connect::method::Method) -> Self
+pub fn radroots_nostr_connect::permission::Permission::parameter(&self) -> core::option::Option<&str>
+pub fn radroots_nostr_connect::permission::Permission::try_with_parameter(radroots_nostr_connect::method::Method, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::fmt::Display for radroots_nostr_connect::permission::Permission
+pub fn radroots_nostr_connect::permission::Permission::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_nostr_connect::permission::Permission
+pub type radroots_nostr_connect::permission::Permission::Err = radroots_nostr_connect::error::RadrootsNostrConnectError
+pub fn radroots_nostr_connect::permission::Permission::from_str(&str) -> core::result::Result<Self, Self::Err>
+pub struct radroots_nostr_connect::Server
+impl radroots_nostr_connect::server::Server
+pub fn radroots_nostr_connect::server::Server::new() -> Self
+pub fn radroots_nostr_connect::server::Server::parse(&mut self, impl core::convert::Into<alloc::string::String>, &str) -> core::result::Result<radroots_nostr_connect::server::ServerRequest, radroots_nostr_connect::error::RadrootsNostrConnectError>
+pub fn radroots_nostr_connect::server::Server::with_supported_extensions(impl core::iter::traits::collect::IntoIterator<Item = radroots_nostr_connect::method::Method>) -> core::result::Result<Self, radroots_nostr_connect::error::RadrootsNostrConnectError>
+impl core::default::Default for radroots_nostr_connect::server::Server
+pub fn radroots_nostr_connect::server::Server::default() -> Self
diff --git a/contracts/api_baselines/radroots_protocol.txt b/contracts/api_baselines/radroots_protocol.txt
@@ -0,0 +1,791 @@
+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::EmptyTransportKind
+pub radroots_protocol::capability::v1::Error::InvalidMeshScopeId
+pub radroots_protocol::capability::v1::Error::InvalidReticulumDestination
+pub radroots_protocol::capability::v1::Error::InvalidTransportKind
+pub radroots_protocol::capability::v1::Error::InvalidTransportKind::value: alloc::string::String
+pub radroots_protocol::capability::v1::Error::MissingRequiredTransport
+pub radroots_protocol::capability::v1::Error::MissingRequiredTransport::kind: radroots_protocol::capability::v1::TransportKind
+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::Experimental
+pub radroots_protocol::capability::v1::Maturity::Preview
+pub radroots_protocol::capability::v1::Maturity::Stable
+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 struct radroots_protocol::capability::v1::TransportKind
+impl radroots_protocol::capability::v1::TransportKind
+pub const radroots_protocol::capability::v1::TransportKind::LOCAL: Self
+pub const radroots_protocol::capability::v1::TransportKind::NOSTR: Self
+pub const radroots_protocol::capability::v1::TransportKind::RADROOTSD: Self
+pub const radroots_protocol::capability::v1::TransportKind::RETICULUM: Self
+pub fn radroots_protocol::capability::v1::TransportKind::as_str(&self) -> &str
+pub fn radroots_protocol::capability::v1::TransportKind::parse(&str) -> core::result::Result<Self, radroots_protocol::capability::v1::Error>
+impl core::fmt::Display for radroots_protocol::capability::v1::TransportKind
+pub fn radroots_protocol::capability::v1::TransportKind::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_protocol::capability::v1::TransportKind
+pub fn radroots_protocol::capability::v1::TransportKind::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::capability::v1::TransportKind
+pub fn radroots_protocol::capability::v1::TransportKind::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::capability::v1::CATALOG: &[radroots_protocol::capability::v1::TransportDescriptor]
+pub const radroots_protocol::capability::v1::MAX_TRANSPORT_KIND_BYTES: usize
+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::SignerOutputInvalid
+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>
diff --git a/contracts/api_baselines/radroots_sdk.txt b/contracts/api_baselines/radroots_sdk.txt
@@ -0,0 +1,539 @@
+pub mod radroots_sdk
+pub mod radroots_sdk::capability
+pub enum radroots_sdk::capability::Availability
+pub radroots_sdk::capability::Availability::Available
+pub radroots_sdk::capability::Availability::Degraded
+pub radroots_sdk::capability::Availability::Unavailable
+pub radroots_sdk::capability::Availability::Unsupported
+pub enum radroots_sdk::capability::Maturity
+pub radroots_sdk::capability::Maturity::Experimental
+pub radroots_sdk::capability::Maturity::Preview
+pub radroots_sdk::capability::Maturity::Stable
+pub struct radroots_sdk::capability::CapabilityId(_)
+impl radroots_sdk::capability::CapabilityId
+pub const radroots_sdk::capability::CapabilityId::BACKUP_RESTORE: Self
+pub const radroots_sdk::capability::CapabilityId::CANONICAL_STORAGE: Self
+pub const radroots_sdk::capability::CapabilityId::DAEMON_DELIVERY: Self
+pub const radroots_sdk::capability::CapabilityId::FARM_PUBLICATION: Self
+pub const radroots_sdk::capability::CapabilityId::KNOWLEDGE_EVENTS: Self
+pub const radroots_sdk::capability::CapabilityId::LISTING_PUBLICATION: Self
+pub const radroots_sdk::capability::CapabilityId::LOCAL_SIGNING: Self
+pub const radroots_sdk::capability::CapabilityId::MESH_TRANSPORT: Self
+pub const radroots_sdk::capability::CapabilityId::NIP46_SIGNING: Self
+pub const radroots_sdk::capability::CapabilityId::NOSTR_DELIVERY: Self
+pub const radroots_sdk::capability::CapabilityId::NOSTR_FETCH: Self
+pub const radroots_sdk::capability::CapabilityId::PERSISTENT_STORAGE: Self
+pub const radroots_sdk::capability::CapabilityId::RETICULUM_DELIVERY: Self
+pub const radroots_sdk::capability::CapabilityId::RETICULUM_FETCH: Self
+pub const radroots_sdk::capability::CapabilityId::SIMPLEX_TRANSPORT: Self
+pub const radroots_sdk::capability::CapabilityId::SYNC_PULL: Self
+pub const radroots_sdk::capability::CapabilityId::SYNC_PUSH: Self
+pub const radroots_sdk::capability::CapabilityId::TRADE_COMMANDS: Self
+pub const radroots_sdk::capability::CapabilityId::TRADE_QUERIES: Self
+pub const fn radroots_sdk::capability::CapabilityId::as_str(self) -> &'static str
+impl core::fmt::Display for radroots_sdk::capability::CapabilityId
+pub fn radroots_sdk::capability::CapabilityId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::capability::CapabilityReport
+impl radroots_sdk::capability::CapabilityReport
+pub fn radroots_sdk::capability::CapabilityReport::get(&self, radroots_sdk::capability::CapabilityId) -> core::option::Option<radroots_sdk::capability::CapabilityStatus>
+pub fn radroots_sdk::capability::CapabilityReport::iter(&self) -> impl core::iter::traits::exact_size::ExactSizeIterator<Item = &radroots_sdk::capability::CapabilityStatus>
+pub struct radroots_sdk::capability::CapabilityStatus
+impl radroots_sdk::capability::CapabilityStatus
+pub const fn radroots_sdk::capability::CapabilityStatus::availability(self) -> radroots_sdk::capability::Availability
+pub const fn radroots_sdk::capability::CapabilityStatus::id(self) -> radroots_sdk::capability::CapabilityId
+pub const fn radroots_sdk::capability::CapabilityStatus::is_compiled(self) -> bool
+pub const fn radroots_sdk::capability::CapabilityStatus::is_configured(self) -> bool
+pub const fn radroots_sdk::capability::CapabilityStatus::maturity(self) -> radroots_sdk::capability::Maturity
+pub mod radroots_sdk::client
+pub struct radroots_sdk::client::Client
+impl radroots_sdk::client::Client
+pub fn radroots_sdk::client::Client::capabilities(&self) -> radroots_sdk::capability::CapabilityReport
+pub async fn radroots_sdk::client::Client::close(&self) -> radroots_sdk::error::Result<()>
+pub fn radroots_sdk::client::Client::configure_nostr(&self, radroots_transport_nostr::profile::RelayProfile) -> radroots_sdk::error::Result<()>
+pub fn radroots_sdk::client::Client::farm(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_sdk::farm::Operations<'_>>>
+pub fn radroots_sdk::client::Client::is_closed(&self) -> bool
+pub fn radroots_sdk::client::Client::listing(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_sdk::listing::Operations<'_>>>
+pub fn radroots_sdk::client::Client::nostr_status(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_transport_nostr::status::RelayStatusReport>>
+pub fn radroots_sdk::client::Client::signer(&self) -> radroots_sdk::error::Result<core::option::Option<&dyn radroots_signing::signer::Signer>>
+pub fn radroots_sdk::client::Client::signing(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_sdk::signing::Operations<'_>>>
+pub fn radroots_sdk::client::Client::sink(&self) -> radroots_sdk::error::Result<core::option::Option<&dyn radroots_transport::sink::EventSink>>
+pub fn radroots_sdk::client::Client::source(&self) -> radroots_sdk::error::Result<core::option::Option<&dyn radroots_transport::source::EventSource>>
+pub fn radroots_sdk::client::Client::storage(&self) -> radroots_sdk::error::Result<&dyn radroots_storage::Storage>
+pub async fn radroots_sdk::client::Client::storage_integrity(&self) -> radroots_sdk::error::Result<radroots_sdk::storage::IntegrityStatus>
+pub fn radroots_sdk::client::Client::storage_operations(&self) -> radroots_sdk::error::Result<radroots_sdk::storage::Operations<'_>>
+pub async fn radroots_sdk::client::Client::storage_status(&self) -> radroots_sdk::error::Result<radroots_sdk::storage::Status>
+pub fn radroots_sdk::client::Client::sync(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_sdk::sync::Operations<'_>>>
+pub fn radroots_sdk::client::Client::trade(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_sdk::trade::Operations<'_>>>
+impl core::fmt::Debug for radroots_sdk::client::Client
+pub fn radroots_sdk::client::Client::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::client::ClientBuilder
+impl radroots_sdk::client::ClientBuilder
+pub fn radroots_sdk::client::ClientBuilder::build(self) -> radroots_sdk::error::Result<radroots_sdk::client::Client>
+pub fn radroots_sdk::client::ClientBuilder::capability_availability(self, radroots_sdk::capability::CapabilityId, radroots_sdk::capability::Availability) -> Self
+pub fn radroots_sdk::client::ClientBuilder::host_sync(self, radroots_sdk::sync::HostPolicy) -> Self
+pub fn radroots_sdk::client::ClientBuilder::memory(radroots_storage::event::SourceGeneration) -> Self
+pub fn radroots_sdk::client::ClientBuilder::memory_default() -> Self
+pub fn radroots_sdk::client::ClientBuilder::new() -> Self
+pub fn radroots_sdk::client::ClientBuilder::nostr(self, radroots_sdk::transport::NostrSlot) -> Self
+pub fn radroots_sdk::client::ClientBuilder::signer(self, alloc::sync::Arc<dyn radroots_signing::signer::Signer>) -> Self
+pub fn radroots_sdk::client::ClientBuilder::signing(self, radroots_sdk::signing::Provider) -> Self
+pub fn radroots_sdk::client::ClientBuilder::sink(self, alloc::sync::Arc<dyn radroots_transport::sink::EventSink>) -> Self
+pub fn radroots_sdk::client::ClientBuilder::source(self, alloc::sync::Arc<dyn radroots_transport::source::EventSource>) -> Self
+pub async fn radroots_sdk::client::ClientBuilder::sqlite(radroots_sdk::storage::SqliteOptions) -> radroots_sdk::error::Result<Self>
+pub fn radroots_sdk::client::ClientBuilder::storage(self, alloc::sync::Arc<dyn radroots_storage::Storage>) -> Self
+pub fn radroots_sdk::client::ClientBuilder::sync_engine(self, radroots_sync::engine::Engine) -> Self
+impl core::fmt::Debug for radroots_sdk::client::ClientBuilder
+pub fn radroots_sdk::client::ClientBuilder::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub mod radroots_sdk::diagnostics
+pub struct radroots_sdk::diagnostics::Report
+impl radroots_sdk::diagnostics::Report
+pub const fn radroots_sdk::diagnostics::Report::capabilities(&self) -> &radroots_sdk::capability::CapabilityReport
+pub const fn radroots_sdk::diagnostics::Report::storage(&self) -> radroots_storage::status::StorageStatus
+pub async fn radroots_sdk::diagnostics::inspect(&radroots_sdk::client::Client) -> radroots_sdk::error::Result<radroots_sdk::diagnostics::Report>
+pub mod radroots_sdk::error
+#[non_exhaustive] pub enum radroots_sdk::error::ErrorKind
+pub radroots_sdk::error::ErrorKind::ClientClosed
+pub radroots_sdk::error::ErrorKind::ClientClosing
+pub radroots_sdk::error::ErrorKind::CloseInProgress
+pub radroots_sdk::error::ErrorKind::InvalidHostConfiguration
+pub radroots_sdk::error::ErrorKind::MissingStorage
+pub radroots_sdk::error::ErrorKind::SharedOperationUnavailable
+pub radroots_sdk::error::ErrorKind::StorageBusy
+pub radroots_sdk::error::ErrorKind::StorageCloseFailed
+pub radroots_sdk::error::ErrorKind::StorageInspectionFailed
+pub radroots_sdk::error::ErrorKind::StorageOpenFailed
+pub radroots_sdk::error::ErrorKind::StorageSchemaTooNew
+pub radroots_sdk::error::ErrorKind::StorageUnsupportedSchema
+impl radroots_sdk::error::ErrorKind
+pub const radroots_sdk::error::ErrorKind::ALL: &'static [Self]
+pub const fn radroots_sdk::error::ErrorKind::descriptor(self) -> radroots_sdk::error::ErrorDescriptor
+pub struct radroots_sdk::error::Error
+impl radroots_sdk::error::Error
+pub const fn radroots_sdk::error::Error::descriptor(&self) -> radroots_sdk::error::ErrorDescriptor
+pub const fn radroots_sdk::error::Error::kind(&self) -> radroots_sdk::error::ErrorKind
+pub fn radroots_sdk::error::Error::to_report(&self) -> radroots_protocol::error::v1::ErrorReport
+impl core::error::Error for radroots_sdk::error::Error
+pub fn radroots_sdk::error::Error::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Debug for radroots_sdk::error::Error
+pub fn radroots_sdk::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_sdk::error::Error
+pub fn radroots_sdk::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::error::ErrorDescriptor
+impl radroots_sdk::error::ErrorDescriptor
+pub const fn radroots_sdk::error::ErrorDescriptor::capability(self) -> core::option::Option<radroots_sdk::capability::CapabilityId>
+pub const fn radroots_sdk::error::ErrorDescriptor::class(self) -> radroots_protocol::error::v1::Class
+pub const fn radroots_sdk::error::ErrorDescriptor::code(self) -> radroots_protocol::error::v1::KnownCode
+pub const fn radroots_sdk::error::ErrorDescriptor::kind(self) -> radroots_sdk::error::ErrorKind
+pub const fn radroots_sdk::error::ErrorDescriptor::message(self) -> &'static str
+pub const fn radroots_sdk::error::ErrorDescriptor::operation(self) -> core::option::Option<radroots_protocol::runtime::v1::OperationId>
+pub const fn radroots_sdk::error::ErrorDescriptor::recovery_actions(self) -> &'static [radroots_protocol::error::v1::RecoveryAction]
+pub const fn radroots_sdk::error::ErrorDescriptor::retryable(self) -> bool
+pub const fn radroots_sdk::error::ErrorDescriptor::safe_detail_keys(self) -> &'static [&'static str]
+pub const radroots_sdk::error::CATALOG: &[radroots_sdk::error::ErrorDescriptor]
+pub type radroots_sdk::error::Result<T> = core::result::Result<T, radroots_sdk::error::Error>
+pub mod radroots_sdk::farm
+#[non_exhaustive] pub enum radroots_sdk::farm::PrepareErrorKind
+pub radroots_sdk::farm::PrepareErrorKind::Coordinate
+pub radroots_sdk::farm::PrepareErrorKind::Draft
+pub radroots_sdk::farm::PrepareErrorKind::Encode
+pub radroots_sdk::farm::PrepareErrorKind::UnauthorizedActor
+pub struct radroots_sdk::farm::EnqueueRequest
+impl radroots_sdk::farm::EnqueueRequest
+pub const fn radroots_sdk::farm::EnqueueRequest::new(radroots_sync::policy::SyncId, radroots_storage::journal::IdempotencyKey, radroots_sdk::farm::Plan, radroots_sdk::transport::Profile, u64, radroots_signing::request::CancellationPolicy) -> Self
+pub struct radroots_sdk::farm::Operations<'a>
+impl<'a> radroots_sdk::farm::Operations<'a>
+pub async fn radroots_sdk::farm::Operations<'a>::enqueue(&self, radroots_sdk::farm::EnqueueRequest) -> core::result::Result<radroots_sync::push::PushStatus, radroots_sync::policy::Error>
+pub struct radroots_sdk::farm::Plan
+impl radroots_sdk::farm::Plan
+pub const fn radroots_sdk::farm::Plan::actor(&self) -> &radroots_signing::actor::Actor
+pub const fn radroots_sdk::farm::Plan::authored_event(&self) -> &radroots_event_codec::authoring::AuthoredEventPlan
+pub const fn radroots_sdk::farm::Plan::coordinate(&self) -> &radroots_event::id::AddressableCoordinate
+pub struct radroots_sdk::farm::PrepareError
+impl radroots_sdk::farm::PrepareError
+pub const fn radroots_sdk::farm::PrepareError::kind(&self) -> radroots_sdk::farm::PrepareErrorKind
+impl core::error::Error for radroots_sdk::farm::PrepareError
+pub fn radroots_sdk::farm::PrepareError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Debug for radroots_sdk::farm::PrepareError
+pub fn radroots_sdk::farm::PrepareError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_sdk::farm::PrepareError
+pub fn radroots_sdk::farm::PrepareError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::farm::PrepareRequest
+impl radroots_sdk::farm::PrepareRequest
+pub const fn radroots_sdk::farm::PrepareRequest::new(radroots_signing::actor::Actor, radroots_event::farm::Farm, u64) -> Self
+pub fn radroots_sdk::farm::prepare(radroots_sdk::farm::PrepareRequest) -> core::result::Result<radroots_sdk::farm::Plan, radroots_sdk::farm::PrepareError>
+pub mod radroots_sdk::listing
+#[non_exhaustive] pub enum radroots_sdk::listing::Action
+pub radroots_sdk::listing::Action::Publish
+pub radroots_sdk::listing::Action::Update
+#[non_exhaustive] pub enum radroots_sdk::listing::PrepareErrorKind
+pub radroots_sdk::listing::PrepareErrorKind::Edit
+pub radroots_sdk::listing::PrepareErrorKind::Mutation
+pub radroots_sdk::listing::PrepareErrorKind::UnauthorizedActor
+pub enum radroots_sdk::listing::RadrootsOperationalListingEditError
+pub radroots_sdk::listing::RadrootsOperationalListingEditError::DuplicateBinId
+pub radroots_sdk::listing::RadrootsOperationalListingEditError::DuplicateBinId::bin_id: radroots_event::id::InventoryBinId
+pub radroots_sdk::listing::RadrootsOperationalListingEditError::FarmPubkeyMismatch
+pub radroots_sdk::listing::RadrootsOperationalListingEditError::FarmPubkeyMismatch::actual_pubkey: radroots_identity::key::PublicKey
+pub radroots_sdk::listing::RadrootsOperationalListingEditError::FarmPubkeyMismatch::expected_pubkey: radroots_identity::key::PublicKey
+pub radroots_sdk::listing::RadrootsOperationalListingEditError::InvalidClassifiedListingAddress(radroots_event::id::ParseError)
+pub radroots_sdk::listing::RadrootsOperationalListingEditError::InvalidFarmPubkey(radroots_identity::error::Error)
+pub radroots_sdk::listing::RadrootsOperationalListingEditError::InvalidModel(radroots_event::trade::validation::OperationalListingValidationError)
+pub radroots_sdk::listing::RadrootsOperationalListingEditError::MissingPrimaryBin
+pub radroots_sdk::listing::RadrootsOperationalListingEditError::MissingPrimaryBin::primary_bin_id: radroots_event::id::InventoryBinId
+impl core::error::Error for radroots_sdk::listing::RadrootsOperationalListingEditError
+impl core::fmt::Display for radroots_sdk::listing::RadrootsOperationalListingEditError
+pub fn radroots_sdk::listing::RadrootsOperationalListingEditError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_sdk::listing::RadrootsOperationalListingLifecycleState
+pub radroots_sdk::listing::RadrootsOperationalListingLifecycleState::Draft
+pub radroots_sdk::listing::RadrootsOperationalListingLifecycleState::Published
+pub enum radroots_sdk::listing::RadrootsOperationalListingMutation
+pub radroots_sdk::listing::RadrootsOperationalListingMutation::Archive
+pub radroots_sdk::listing::RadrootsOperationalListingMutation::Archive::listing_addr: radroots_event::id::ClassifiedListingAddress
+pub radroots_sdk::listing::RadrootsOperationalListingMutation::Publish
+pub radroots_sdk::listing::RadrootsOperationalListingMutation::Publish::draft: radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit
+pub radroots_sdk::listing::RadrootsOperationalListingMutation::SaveDraft
+pub radroots_sdk::listing::RadrootsOperationalListingMutation::SaveDraft::draft: radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit
+pub radroots_sdk::listing::RadrootsOperationalListingMutation::Update
+pub radroots_sdk::listing::RadrootsOperationalListingMutation::Update::draft: radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit
+impl radroots_sdk::listing::RadrootsOperationalListingMutation
+pub fn radroots_sdk::listing::RadrootsOperationalListingMutation::archive(radroots_event::id::ClassifiedListingAddress) -> Self
+pub fn radroots_sdk::listing::RadrootsOperationalListingMutation::canonical_draft(&self) -> core::result::Result<&radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit, radroots_sdk::listing::RadrootsOperationalListingMutationError>
+pub fn radroots_sdk::listing::RadrootsOperationalListingMutation::lifecycle_state(&self) -> core::result::Result<radroots_sdk::listing::RadrootsOperationalListingLifecycleState, radroots_sdk::listing::RadrootsOperationalListingMutationError>
+pub fn radroots_sdk::listing::RadrootsOperationalListingMutation::listing_addr(&self) -> core::result::Result<&radroots_event::id::ClassifiedListingAddress, radroots_sdk::listing::RadrootsOperationalListingMutationError>
+pub fn radroots_sdk::listing::RadrootsOperationalListingMutation::publish(radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit) -> Self
+pub fn radroots_sdk::listing::RadrootsOperationalListingMutation::save_draft(radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit) -> Self
+pub fn radroots_sdk::listing::RadrootsOperationalListingMutation::update(radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit) -> Self
+pub enum radroots_sdk::listing::RadrootsOperationalListingMutationError
+pub radroots_sdk::listing::RadrootsOperationalListingMutationError::AuthoredPlan(radroots_event::draft::DraftError)
+pub radroots_sdk::listing::RadrootsOperationalListingMutationError::EncodeListing(alloc::string::String)
+pub radroots_sdk::listing::RadrootsOperationalListingMutationError::UnsupportedMutation
+impl core::error::Error for radroots_sdk::listing::RadrootsOperationalListingMutationError
+impl core::fmt::Display for radroots_sdk::listing::RadrootsOperationalListingMutationError
+pub fn radroots_sdk::listing::RadrootsOperationalListingMutationError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::listing::EnqueueRequest
+impl radroots_sdk::listing::EnqueueRequest
+pub const fn radroots_sdk::listing::EnqueueRequest::new(radroots_sync::policy::SyncId, radroots_storage::journal::IdempotencyKey, radroots_sdk::listing::Plan, radroots_sdk::transport::Profile, u64, radroots_signing::request::CancellationPolicy) -> Self
+pub struct radroots_sdk::listing::Operations<'a>
+impl<'a> radroots_sdk::listing::Operations<'a>
+pub async fn radroots_sdk::listing::Operations<'a>::enqueue(&self, radroots_sdk::listing::EnqueueRequest) -> core::result::Result<radroots_sync::push::PushStatus, radroots_sync::policy::Error>
+pub struct radroots_sdk::listing::Plan
+impl radroots_sdk::listing::Plan
+pub const fn radroots_sdk::listing::Plan::action(&self) -> radroots_sdk::listing::Action
+pub const fn radroots_sdk::listing::Plan::actor(&self) -> &radroots_signing::actor::Actor
+pub const fn radroots_sdk::listing::Plan::address(&self) -> &radroots_event::id::ClassifiedListingAddress
+pub const fn radroots_sdk::listing::Plan::authored_event(&self) -> &radroots_event_codec::authoring::AuthoredEventPlan
+pub const fn radroots_sdk::listing::Plan::lifecycle(&self) -> radroots_sdk::listing::RadrootsOperationalListingLifecycleState
+pub struct radroots_sdk::listing::PrepareError
+impl radroots_sdk::listing::PrepareError
+pub const fn radroots_sdk::listing::PrepareError::kind(&self) -> radroots_sdk::listing::PrepareErrorKind
+impl core::error::Error for radroots_sdk::listing::PrepareError
+pub fn radroots_sdk::listing::PrepareError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Debug for radroots_sdk::listing::PrepareError
+pub fn radroots_sdk::listing::PrepareError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_sdk::listing::PrepareError
+pub fn radroots_sdk::listing::PrepareError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::listing::PrepareRequest
+impl radroots_sdk::listing::PrepareRequest
+pub const fn radroots_sdk::listing::PrepareRequest::publish(radroots_signing::actor::Actor, radroots_sdk::listing::RadrootsOperationalListingEditDocumentV1, u64) -> Self
+pub const fn radroots_sdk::listing::PrepareRequest::update(radroots_signing::actor::Actor, radroots_sdk::listing::RadrootsOperationalListingEditDocumentV1, u64) -> Self
+pub struct radroots_sdk::listing::RadrootsClassifiedListingAddressParts
+pub radroots_sdk::listing::RadrootsClassifiedListingAddressParts::address: radroots_event::id::ClassifiedListingAddress
+pub radroots_sdk::listing::RadrootsClassifiedListingAddressParts::kind: u32
+pub radroots_sdk::listing::RadrootsClassifiedListingAddressParts::listing_id: radroots_event::id::DTag
+pub radroots_sdk::listing::RadrootsClassifiedListingAddressParts::seller_pubkey: radroots_identity::key::PublicKey
+impl radroots_sdk::listing::RadrootsClassifiedListingAddressParts
+pub fn radroots_sdk::listing::RadrootsClassifiedListingAddressParts::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub struct radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit
+impl radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit
+pub fn radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit::listing(&self) -> &radroots_event::listing::operational::OperationalListing
+pub fn radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit::new(radroots_event::listing::operational::OperationalListing, radroots_identity::key::PublicKey) -> core::result::Result<Self, radroots_sdk::listing::RadrootsOperationalListingEditError>
+pub fn radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit::public_listing_addr(&self) -> &radroots_event::id::ClassifiedListingAddress
+pub fn radroots_sdk::listing::RadrootsOperationalListingCanonicalEdit::seller_pubkey(&self) -> &radroots_identity::key::PublicKey
+pub struct radroots_sdk::listing::RadrootsOperationalListingEditDocumentV1
+pub radroots_sdk::listing::RadrootsOperationalListingEditDocumentV1::listing: radroots_event::listing::operational::OperationalListing
+impl radroots_sdk::listing::RadrootsOperationalListingEditDocumentV1
+pub fn radroots_sdk::listing::RadrootsOperationalListingEditDocumentV1::new(radroots_event::listing::operational::OperationalListing) -> Self
+pub struct radroots_sdk::listing::RadrootsOperationalListingSubtotal
+pub radroots_sdk::listing::RadrootsOperationalListingSubtotal::price_amount: radroots_core::money::Money
+pub radroots_sdk::listing::RadrootsOperationalListingSubtotal::price_currency: radroots_core::currency::Currency
+pub radroots_sdk::listing::RadrootsOperationalListingSubtotal::quantity_amount: radroots_core::decimal::Decimal
+pub radroots_sdk::listing::RadrootsOperationalListingSubtotal::quantity_unit: radroots_core::unit::Unit
+pub struct radroots_sdk::listing::RadrootsOperationalListingTotal
+pub radroots_sdk::listing::RadrootsOperationalListingTotal::price_amount: radroots_core::money::Money
+pub radroots_sdk::listing::RadrootsOperationalListingTotal::price_currency: radroots_core::currency::Currency
+pub radroots_sdk::listing::RadrootsOperationalListingTotal::quantity_amount: radroots_core::decimal::Decimal
+pub radroots_sdk::listing::RadrootsOperationalListingTotal::quantity_unit: radroots_core::unit::Unit
+pub struct radroots_sdk::listing::RadrootsOperationalListingTradeProjection
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::availability: radroots_event::listing::operational::OperationalListingAvailability
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::bin_quantity: radroots_core::quantity::Quantity
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::delivery_method: radroots_event::listing::operational::OperationalListingDeliveryMethod
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::description: alloc::string::String
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::inventory_available: radroots_core::decimal::Decimal
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::listing: radroots_event::listing::operational::OperationalListing
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::listing_addr: radroots_event::id::ClassifiedListingAddress
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::listing_id: alloc::string::String
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::location: radroots_event::listing::operational::OperationalListingPublicLocation
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::primary_bin_id: alloc::string::String
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::product_type: alloc::string::String
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::seller_pubkey: alloc::string::String
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::title: alloc::string::String
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::unit: radroots_core::unit::Unit
+pub radroots_sdk::listing::RadrootsOperationalListingTradeProjection::unit_price: radroots_core::money::Money
+pub struct radroots_sdk::listing::RadrootsPublicClassifiedListingAddress
+pub radroots_sdk::listing::RadrootsPublicClassifiedListingAddress::address: radroots_event::id::ClassifiedListingAddress
+pub radroots_sdk::listing::RadrootsPublicClassifiedListingAddress::kind: u32
+pub radroots_sdk::listing::RadrootsPublicClassifiedListingAddress::listing_id: radroots_event::id::DTag
+pub radroots_sdk::listing::RadrootsPublicClassifiedListingAddress::seller_pubkey: radroots_identity::key::PublicKey
+impl radroots_sdk::listing::RadrootsPublicClassifiedListingAddress
+pub fn radroots_sdk::listing::RadrootsPublicClassifiedListingAddress::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_event::id::ParseError>
+pub trait radroots_sdk::listing::BinPricingTryExt
+pub fn radroots_sdk::listing::BinPricingTryExt::try_subtotal_for_count(&self, u32) -> core::result::Result<radroots_sdk::listing::RadrootsOperationalListingSubtotal, radroots_core::quantity_price::Error>
+pub fn radroots_sdk::listing::BinPricingTryExt::try_total_for_count(&self, u32) -> core::result::Result<radroots_sdk::listing::RadrootsOperationalListingTotal, radroots_core::quantity_price::Error>
+impl radroots_sdk::listing::BinPricingTryExt for radroots_event::listing::operational::OperationalListingBin
+pub fn radroots_event::listing::operational::OperationalListingBin::try_subtotal_for_count(&self, u32) -> core::result::Result<radroots_sdk::listing::RadrootsOperationalListingSubtotal, radroots_core::quantity_price::Error>
+pub fn radroots_event::listing::operational::OperationalListingBin::try_total_for_count(&self, u32) -> core::result::Result<radroots_sdk::listing::RadrootsOperationalListingTotal, radroots_core::quantity_price::Error>
+pub fn radroots_sdk::listing::parse_classified_listing_address(impl core::convert::AsRef<str>) -> core::result::Result<radroots_sdk::listing::RadrootsClassifiedListingAddressParts, radroots_event::id::ParseError>
+pub fn radroots_sdk::listing::parse_operational_listing_event(&radroots_event::envelope::EventEnvelope) -> core::result::Result<radroots_event::listing::operational::OperationalListing, radroots_event::listing::operational::OperationalListingParseError>
+pub fn radroots_sdk::listing::parse_public_classified_listing_address(impl core::convert::AsRef<str>) -> core::result::Result<radroots_sdk::listing::RadrootsPublicClassifiedListingAddress, radroots_event::id::ParseError>
+pub fn radroots_sdk::listing::prepare(radroots_sdk::listing::PrepareRequest) -> core::result::Result<radroots_sdk::listing::Plan, radroots_sdk::listing::PrepareError>
+pub fn radroots_sdk::listing::validate_operational_listing_event(&radroots_event_codec::verification::v1::RadrootsSignatureVerifiedEvent) -> core::result::Result<radroots_sdk::listing::RadrootsOperationalListingTradeProjection, radroots_event::trade::validation::OperationalListingValidationError>
+pub fn radroots_sdk::listing::validate_operational_listing_model(radroots_event::listing::operational::OperationalListing, &radroots_identity::key::PublicKey) -> core::result::Result<radroots_sdk::listing::RadrootsOperationalListingTradeProjection, radroots_event::trade::validation::OperationalListingValidationError>
+pub mod radroots_sdk::signing
+pub use radroots_sdk::signing::AuthorizationHeader
+pub use radroots_sdk::signing::BlossomAuthorizationPlan
+#[non_exhaustive] pub enum radroots_sdk::signing::BlossomSigningError
+pub radroots_sdk::signing::BlossomSigningError::Encoding(radroots_nostr::blossom::AuthorizationError)
+pub radroots_sdk::signing::BlossomSigningError::Signing(radroots_signing::error::Error)
+pub radroots_sdk::signing::BlossomSigningError::WrongPurpose
+impl core::error::Error for radroots_sdk::signing::BlossomSigningError
+pub fn radroots_sdk::signing::BlossomSigningError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_sdk::signing::BlossomSigningError
+pub fn radroots_sdk::signing::BlossomSigningError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub enum radroots_sdk::signing::Mode
+pub radroots_sdk::signing::Mode::Host
+pub radroots_sdk::signing::Mode::Local
+pub radroots_sdk::signing::Mode::Nip46
+pub struct radroots_sdk::signing::Operations<'a>
+impl<'a> radroots_sdk::signing::Operations<'a>
+pub async fn radroots_sdk::signing::Operations<'a>::authorize_blossom_upload(&self, radroots_signing::request::SignRequest) -> core::result::Result<radroots_nostr::blossom::AuthorizationHeader, radroots_sdk::signing::BlossomSigningError>
+pub async fn radroots_sdk::signing::Operations<'a>::sign(&self, radroots_signing::request::SignRequest) -> core::result::Result<radroots_signing::receipt::SignReceipt, radroots_signing::error::Error>
+impl core::fmt::Debug for radroots_sdk::signing::Operations<'_>
+pub fn radroots_sdk::signing::Operations<'_>::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::signing::Provider
+impl radroots_sdk::signing::Provider
+pub fn radroots_sdk::signing::Provider::as_signer(&self) -> &dyn radroots_signing::signer::Signer
+pub fn radroots_sdk::signing::Provider::host(alloc::sync::Arc<dyn radroots_signing::signer::Signer>) -> Self
+pub fn radroots_sdk::signing::Provider::local(radroots_nostr::signing::LocalSigner) -> Self
+pub const fn radroots_sdk::signing::Provider::mode(&self) -> radroots_sdk::signing::Mode
+pub fn radroots_sdk::signing::Provider::nip46(alloc::sync::Arc<dyn radroots_signing::signer::Signer>) -> Self
+pub async fn radroots_sdk::signing::Provider::sign(&self, radroots_signing::request::SignRequest) -> core::result::Result<radroots_signing::receipt::SignReceipt, radroots_signing::error::Error>
+pub async fn radroots_sdk::signing::Provider::status(&self) -> core::result::Result<radroots_signing::status::SignerStatus, radroots_signing::error::Error>
+impl core::fmt::Debug for radroots_sdk::signing::Provider
+pub fn radroots_sdk::signing::Provider::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub fn radroots_sdk::signing::blossom_upload_request(radroots_protocol::runtime::v1::OperationId, radroots_signing::identity::SigningIntentId, radroots_signing::actor::Actor, radroots_event_codec::authoring::BlossomAuthorizationPlan, radroots_signing::request::SignPolicy) -> core::result::Result<radroots_signing::request::SignRequest, radroots_signing::error::Error>
+pub mod radroots_sdk::storage
+pub struct radroots_sdk::storage::Operations<'a>
+impl<'a> radroots_sdk::storage::Operations<'a>
+pub async fn radroots_sdk::storage::Operations<'a>::begin_backup(&self, radroots_storage::backup::BackupPlan) -> core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::error::Error>
+pub async fn radroots_sdk::storage::Operations<'a>::begin_restore(&self, radroots_storage::backup::RestorePlan) -> core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::error::Error>
+pub async fn radroots_sdk::storage::Operations<'a>::integrity(&self) -> core::result::Result<radroots_sdk::storage::IntegrityStatus, radroots_storage::error::Error>
+pub async fn radroots_sdk::storage::Operations<'a>::status(&self) -> core::result::Result<radroots_sdk::storage::Status, radroots_storage::error::Error>
+pub async fn radroots_sdk::storage::Operations<'a>::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::error::Error>
+pub async fn radroots_sdk::storage::Operations<'a>::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::error::Error>
+impl core::fmt::Debug for radroots_sdk::storage::Operations<'_>
+pub fn radroots_sdk::storage::Operations<'_>::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub type radroots_sdk::storage::IntegrityStatus = radroots_storage::status::IntegrityStatus
+pub type radroots_sdk::storage::SqliteOpenMode = radroots_storage_sqlite::open::OpenMode
+pub type radroots_sdk::storage::SqliteOptions = radroots_storage_sqlite::config::OpenOptions
+pub type radroots_sdk::storage::SqlitePaths = radroots_storage_sqlite::open::Paths
+pub type radroots_sdk::storage::Status = radroots_storage::status::StorageStatus
+pub mod radroots_sdk::sync
+pub struct radroots_sdk::sync::HostPolicy
+impl radroots_sdk::sync::HostPolicy
+pub fn radroots_sdk::sync::HostPolicy::new(u64, u64, u64) -> core::result::Result<Self, radroots_sync::policy::Error>
+pub fn radroots_sdk::sync::HostPolicy::standard() -> Self
+impl core::default::Default for radroots_sdk::sync::HostPolicy
+pub fn radroots_sdk::sync::HostPolicy::default() -> Self
+pub struct radroots_sdk::sync::Operations<'a>
+impl<'a> radroots_sdk::sync::Operations<'a>
+pub async fn radroots_sdk::sync::Operations<'a>::admit_signed(&self, radroots_sync::policy::SyncId) -> core::result::Result<radroots_sync::push::AdmissionRunReceipt, radroots_sync::policy::Error>
+pub async fn radroots_sdk::sync::Operations<'a>::cancel_push(&self, radroots_sync::policy::SyncId) -> core::result::Result<radroots_sync::push::PushCancellationReceipt, radroots_sync::policy::Error>
+pub async fn radroots_sdk::sync::Operations<'a>::deliver_push(&self, radroots_sync::policy::SyncId) -> core::result::Result<radroots_sync::push::DeliveryExecutionReceipt, radroots_sync::policy::Error>
+pub async fn radroots_sdk::sync::Operations<'a>::ingest(&self, radroots_transport::source::ObservedEvent, &dyn radroots_sync::ingest::AdmissionPolicy) -> core::result::Result<radroots_sync::ingest::IngestReceipt, radroots_sync::policy::Error>
+pub async fn radroots_sdk::sync::Operations<'a>::ingest_batch(&self, alloc::vec::Vec<radroots_transport::source::ObservedEvent>, &dyn radroots_sync::ingest::AdmissionPolicy) -> radroots_sync::ingest::IngestBatchReceipt
+pub async fn radroots_sdk::sync::Operations<'a>::prepare_push(&self, radroots_sync::push::PushRequest) -> core::result::Result<radroots_sync::push::PushPreparation, radroots_sync::policy::Error>
+pub async fn radroots_sdk::sync::Operations<'a>::pull(&self, radroots_sync::pull::PullRequest, &dyn radroots_sync::ingest::AdmissionPolicy) -> core::result::Result<radroots_sync::pull::PullReceipt, radroots_sync::policy::Error>
+pub async fn radroots_sdk::sync::Operations<'a>::push_status(&self, radroots_sync::policy::SyncId) -> core::result::Result<core::option::Option<radroots_sync::push::PushStatus>, radroots_sync::policy::Error>
+pub async fn radroots_sdk::sync::Operations<'a>::refresh_projection(&self, radroots_sync::projection::RefreshRequest, &dyn radroots_sync::projection::Reducer) -> core::result::Result<radroots_sync::projection::RefreshReceipt, radroots_sync::policy::Error>
+pub fn radroots_sdk::sync::Operations<'a>::retry_decision(&self, &radroots_storage::authored_delivery::AuthoredDeliveryPlan, u64) -> core::result::Result<radroots_protocol::runtime::v1::SyncRetryDecision, radroots_sync::policy::Error>
+pub async fn radroots_sdk::sync::Operations<'a>::sign_prepared(&self, radroots_sync::push::PushRequest) -> core::result::Result<radroots_sync::push::SigningRunReceipt, radroots_sync::policy::Error>
+pub async fn radroots_sdk::sync::Operations<'a>::status(&self, &[radroots_storage::projection::ProjectionId]) -> core::result::Result<radroots_sync::status::SyncStatus, radroots_sync::policy::Error>
+pub async fn radroots_sdk::sync::Operations<'a>::submit_push(&self, radroots_sync::push::PushRequest) -> core::result::Result<radroots_sync::push::PushStatus, radroots_sync::policy::Error>
+impl core::fmt::Debug for radroots_sdk::sync::Operations<'_>
+pub fn radroots_sdk::sync::Operations<'_>::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub mod radroots_sdk::trade
+#[non_exhaustive] pub enum radroots_sdk::trade::PrepareErrorKind
+pub radroots_sdk::trade::PrepareErrorKind::CanonicalMutation
+pub radroots_sdk::trade::PrepareErrorKind::Draft
+pub radroots_sdk::trade::PrepareErrorKind::Encode
+pub radroots_sdk::trade::PrepareErrorKind::UnauthorizedActor
+pub radroots_sdk::trade::PrepareErrorKind::Workflow
+#[non_exhaustive] pub enum radroots_sdk::trade::PrivateTermsError
+pub radroots_sdk::trade::PrivateTermsError::EvidenceMismatch
+pub radroots_sdk::trade::PrivateTermsError::NotRequired
+pub radroots_sdk::trade::PrivateTermsError::Storage
+pub struct radroots_sdk::trade::EnqueueRequest
+impl radroots_sdk::trade::EnqueueRequest
+pub const fn radroots_sdk::trade::EnqueueRequest::new(radroots_sync::policy::SyncId, radroots_storage::journal::IdempotencyKey, radroots_sdk::trade::Plan, radroots_sdk::transport::Profile, u64, radroots_signing::request::CancellationPolicy) -> Self
+pub struct radroots_sdk::trade::Operations<'a>
+impl<'a> radroots_sdk::trade::Operations<'a>
+pub async fn radroots_sdk::trade::Operations<'a>::enqueue(&self, radroots_sdk::trade::EnqueueRequest) -> core::result::Result<radroots_sync::push::PushStatus, radroots_sync::policy::Error>
+pub async fn radroots_sdk::trade::Operations<'a>::private_artifact(&self, radroots_storage::private_artifact::PrivateArtifactId) -> core::result::Result<core::option::Option<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::error::Error>
+pub async fn radroots_sdk::trade::Operations<'a>::query_visible(&self, radroots_storage::event::EventQuery) -> core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::error::Error>
+pub async fn radroots_sdk::trade::Operations<'a>::verify_private_terms(&self, &radroots_sdk::trade::Plan, radroots_storage::private_artifact::PrivateArtifactId) -> core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_sdk::trade::PrivateTermsError>
+impl core::fmt::Debug for radroots_sdk::trade::Operations<'_>
+pub fn radroots_sdk::trade::Operations<'_>::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::trade::Plan
+impl radroots_sdk::trade::Plan
+pub const fn radroots_sdk::trade::Plan::actor(&self) -> &radroots_signing::actor::Actor
+pub const fn radroots_sdk::trade::Plan::authored_event(&self) -> &radroots_event_codec::authoring::AuthoredEventPlan
+pub const fn radroots_sdk::trade::Plan::workflow(&self) -> &radroots_trade::workflow::WorkflowPlan
+pub struct radroots_sdk::trade::PrepareError
+impl radroots_sdk::trade::PrepareError
+pub const fn radroots_sdk::trade::PrepareError::kind(&self) -> radroots_sdk::trade::PrepareErrorKind
+impl core::error::Error for radroots_sdk::trade::PrepareError
+pub fn radroots_sdk::trade::PrepareError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Debug for radroots_sdk::trade::PrepareError
+pub fn radroots_sdk::trade::PrepareError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_sdk::trade::PrepareError
+pub fn radroots_sdk::trade::PrepareError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::trade::PrepareRequest
+impl radroots_sdk::trade::PrepareRequest
+pub const fn radroots_sdk::trade::PrepareRequest::new(radroots_signing::actor::Actor, radroots_event::trade::TradeMutationEnvelopeV1) -> Self
+pub fn radroots_sdk::trade::prepare(radroots_sdk::trade::PrepareRequest) -> core::result::Result<radroots_sdk::trade::Plan, radroots_sdk::trade::PrepareError>
+pub fn radroots_sdk::trade::project(radroots_trade::trade_contract_v1::RadrootsTradeReductionInputV1) -> radroots_trade::trade_contract_v1::RadrootsTradeProjectionV1
+pub mod radroots_sdk::transport
+pub use radroots_sdk::transport::DEFAULT_PUBLIC_RELAY
+pub use radroots_sdk::transport::ReconnectBackoff
+pub use radroots_sdk::transport::RelayAccess
+pub use radroots_sdk::transport::RelayAggregateState
+pub use radroots_sdk::transport::RelayCapabilityEvidence
+pub use radroots_sdk::transport::RelayCursor
+pub use radroots_sdk::transport::RelayEndpoint
+pub use radroots_sdk::transport::RelayEvidenceState
+pub use radroots_sdk::transport::RelayProfile
+pub use radroots_sdk::transport::RelayProfileKind
+pub use radroots_sdk::transport::RelayStatus
+pub use radroots_sdk::transport::RelayStatusReport
+pub use radroots_sdk::transport::RelayUrl
+pub use radroots_sdk::transport::RelayUrlPolicy
+#[non_exhaustive] pub enum radroots_sdk::transport::DaemonAuth
+pub radroots_sdk::transport::DaemonAuth::BearerToken(alloc::string::String)
+pub radroots_sdk::transport::DaemonAuth::None
+impl core::fmt::Debug for radroots_sdk::transport::DaemonAuth
+pub fn radroots_sdk::transport::DaemonAuth::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub enum radroots_sdk::transport::DaemonErrorKind
+pub radroots_sdk::transport::DaemonErrorKind::Authentication
+pub radroots_sdk::transport::DaemonErrorKind::InvalidRequest
+pub radroots_sdk::transport::DaemonErrorKind::InvalidResponse
+pub radroots_sdk::transport::DaemonErrorKind::Rpc
+pub radroots_sdk::transport::DaemonErrorKind::Transport
+pub struct radroots_sdk::transport::DaemonConfig
+impl radroots_sdk::transport::DaemonConfig
+pub fn radroots_sdk::transport::DaemonConfig::new(impl core::convert::Into<alloc::string::String>) -> Self
+pub fn radroots_sdk::transport::DaemonConfig::with_auth(self, radroots_sdk::transport::DaemonAuth) -> Self
+pub const fn radroots_sdk::transport::DaemonConfig::with_timeout(self, core::time::Duration) -> Self
+pub struct radroots_sdk::transport::DaemonDelivery
+impl radroots_sdk::transport::DaemonDelivery
+pub async fn radroots_sdk::transport::DaemonDelivery::deliver(&self, radroots_event::draft::SignedEvent, radroots_protocol::radrootsd::transport_publish::v5::TargetPolicy, radroots_protocol::radrootsd::transport_publish::v5::DeliveryPolicy, core::option::Option<alloc::string::String>, core::option::Option<u64>) -> core::result::Result<radroots_protocol::radrootsd::transport_publish::v5::EventResponse, radroots_sdk::transport::DaemonError>
+pub fn radroots_sdk::transport::DaemonDelivery::new(radroots_sdk::transport::DaemonConfig) -> Self
+pub struct radroots_sdk::transport::DaemonError
+impl radroots_sdk::transport::DaemonError
+pub const fn radroots_sdk::transport::DaemonError::kind(&self) -> radroots_sdk::transport::DaemonErrorKind
+impl core::error::Error for radroots_sdk::transport::DaemonError
+pub fn radroots_sdk::transport::DaemonError::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Debug for radroots_sdk::transport::DaemonError
+pub fn radroots_sdk::transport::DaemonError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_sdk::transport::DaemonError
+pub fn radroots_sdk::transport::DaemonError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::transport::NostrSlot
+impl radroots_sdk::transport::NostrSlot
+pub fn radroots_sdk::transport::NostrSlot::clear(&self)
+pub fn radroots_sdk::transport::NostrSlot::configure(&self, radroots_transport_nostr::profile::RelayProfile) -> radroots_sdk::error::Result<()>
+pub fn radroots_sdk::transport::NostrSlot::new() -> Self
+pub fn radroots_sdk::transport::NostrSlot::read_targets(&self) -> core::option::Option<radroots_transport::target::TargetSet>
+pub fn radroots_sdk::transport::NostrSlot::relay_status(&self) -> core::option::Option<radroots_transport_nostr::status::RelayStatusReport>
+pub fn radroots_sdk::transport::NostrSlot::write_targets(&self) -> core::option::Option<radroots_transport::target::TargetSet>
+impl core::default::Default for radroots_sdk::transport::NostrSlot
+pub fn radroots_sdk::transport::NostrSlot::default() -> Self
+impl core::fmt::Debug for radroots_sdk::transport::NostrSlot
+pub fn radroots_sdk::transport::NostrSlot::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl radroots_transport::sink::EventSink for radroots_sdk::transport::NostrSlot
+pub fn radroots_sdk::transport::NostrSlot::deliver(&self, radroots_transport::sink::DeliveryRequest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::sink::DeliveryReceipt, radroots_transport::sink::SinkFailure>>
+pub fn radroots_sdk::transport::NostrSlot::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::status::SinkStatus, radroots_transport::error::Error>>
+impl radroots_transport::source::EventSource for radroots_sdk::transport::NostrSlot
+pub fn radroots_sdk::transport::NostrSlot::fetch(&self, radroots_transport::source::FetchRequest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::source::FetchPage, radroots_transport::error::Error>>
+pub fn radroots_sdk::transport::NostrSlot::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::status::SourceStatus, radroots_transport::error::Error>>
+pub struct radroots_sdk::transport::Profile
+impl radroots_sdk::transport::Profile
+pub fn radroots_sdk::transport::Profile::delivery(radroots_transport::target::TargetSet, radroots_transport::policy::SatisfactionPolicy) -> core::result::Result<Self, radroots_transport::error::Error>
+pub const fn radroots_sdk::transport::Profile::is_local_only(&self) -> bool
+pub const fn radroots_sdk::transport::Profile::local_only() -> Self
+pub const fn radroots_sdk::transport::Profile::satisfaction(&self) -> core::option::Option<&radroots_transport::policy::SatisfactionPolicy>
+pub const fn radroots_sdk::transport::Profile::sink_status(&self) -> core::option::Option<&radroots_transport::status::SinkStatus>
+pub const fn radroots_sdk::transport::Profile::source_status(&self) -> core::option::Option<&radroots_transport::status::SourceStatus>
+pub const fn radroots_sdk::transport::Profile::targets(&self) -> core::option::Option<&radroots_transport::target::TargetSet>
+pub fn radroots_sdk::transport::Profile::unavailable_preview(radroots_transport::id::TransportId) -> Self
+impl core::default::Default for radroots_sdk::transport::Profile
+pub fn radroots_sdk::transport::Profile::default() -> Self
+pub struct radroots_sdk::Client
+impl radroots_sdk::client::Client
+pub fn radroots_sdk::client::Client::capabilities(&self) -> radroots_sdk::capability::CapabilityReport
+pub async fn radroots_sdk::client::Client::close(&self) -> radroots_sdk::error::Result<()>
+pub fn radroots_sdk::client::Client::configure_nostr(&self, radroots_transport_nostr::profile::RelayProfile) -> radroots_sdk::error::Result<()>
+pub fn radroots_sdk::client::Client::farm(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_sdk::farm::Operations<'_>>>
+pub fn radroots_sdk::client::Client::is_closed(&self) -> bool
+pub fn radroots_sdk::client::Client::listing(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_sdk::listing::Operations<'_>>>
+pub fn radroots_sdk::client::Client::nostr_status(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_transport_nostr::status::RelayStatusReport>>
+pub fn radroots_sdk::client::Client::signer(&self) -> radroots_sdk::error::Result<core::option::Option<&dyn radroots_signing::signer::Signer>>
+pub fn radroots_sdk::client::Client::signing(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_sdk::signing::Operations<'_>>>
+pub fn radroots_sdk::client::Client::sink(&self) -> radroots_sdk::error::Result<core::option::Option<&dyn radroots_transport::sink::EventSink>>
+pub fn radroots_sdk::client::Client::source(&self) -> radroots_sdk::error::Result<core::option::Option<&dyn radroots_transport::source::EventSource>>
+pub fn radroots_sdk::client::Client::storage(&self) -> radroots_sdk::error::Result<&dyn radroots_storage::Storage>
+pub async fn radroots_sdk::client::Client::storage_integrity(&self) -> radroots_sdk::error::Result<radroots_sdk::storage::IntegrityStatus>
+pub fn radroots_sdk::client::Client::storage_operations(&self) -> radroots_sdk::error::Result<radroots_sdk::storage::Operations<'_>>
+pub async fn radroots_sdk::client::Client::storage_status(&self) -> radroots_sdk::error::Result<radroots_sdk::storage::Status>
+pub fn radroots_sdk::client::Client::sync(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_sdk::sync::Operations<'_>>>
+pub fn radroots_sdk::client::Client::trade(&self) -> radroots_sdk::error::Result<core::option::Option<radroots_sdk::trade::Operations<'_>>>
+impl core::fmt::Debug for radroots_sdk::client::Client
+pub fn radroots_sdk::client::Client::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::ClientBuilder
+impl radroots_sdk::client::ClientBuilder
+pub fn radroots_sdk::client::ClientBuilder::build(self) -> radroots_sdk::error::Result<radroots_sdk::client::Client>
+pub fn radroots_sdk::client::ClientBuilder::capability_availability(self, radroots_sdk::capability::CapabilityId, radroots_sdk::capability::Availability) -> Self
+pub fn radroots_sdk::client::ClientBuilder::host_sync(self, radroots_sdk::sync::HostPolicy) -> Self
+pub fn radroots_sdk::client::ClientBuilder::memory(radroots_storage::event::SourceGeneration) -> Self
+pub fn radroots_sdk::client::ClientBuilder::memory_default() -> Self
+pub fn radroots_sdk::client::ClientBuilder::new() -> Self
+pub fn radroots_sdk::client::ClientBuilder::nostr(self, radroots_sdk::transport::NostrSlot) -> Self
+pub fn radroots_sdk::client::ClientBuilder::signer(self, alloc::sync::Arc<dyn radroots_signing::signer::Signer>) -> Self
+pub fn radroots_sdk::client::ClientBuilder::signing(self, radroots_sdk::signing::Provider) -> Self
+pub fn radroots_sdk::client::ClientBuilder::sink(self, alloc::sync::Arc<dyn radroots_transport::sink::EventSink>) -> Self
+pub fn radroots_sdk::client::ClientBuilder::source(self, alloc::sync::Arc<dyn radroots_transport::source::EventSource>) -> Self
+pub async fn radroots_sdk::client::ClientBuilder::sqlite(radroots_sdk::storage::SqliteOptions) -> radroots_sdk::error::Result<Self>
+pub fn radroots_sdk::client::ClientBuilder::storage(self, alloc::sync::Arc<dyn radroots_storage::Storage>) -> Self
+pub fn radroots_sdk::client::ClientBuilder::sync_engine(self, radroots_sync::engine::Engine) -> Self
+impl core::fmt::Debug for radroots_sdk::client::ClientBuilder
+pub fn radroots_sdk::client::ClientBuilder::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_sdk::Error
+impl radroots_sdk::error::Error
+pub const fn radroots_sdk::error::Error::descriptor(&self) -> radroots_sdk::error::ErrorDescriptor
+pub const fn radroots_sdk::error::Error::kind(&self) -> radroots_sdk::error::ErrorKind
+pub fn radroots_sdk::error::Error::to_report(&self) -> radroots_protocol::error::v1::ErrorReport
+impl core::error::Error for radroots_sdk::error::Error
+pub fn radroots_sdk::error::Error::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Debug for radroots_sdk::error::Error
+pub fn radroots_sdk::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_sdk::error::Error
+pub fn radroots_sdk::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub type radroots_sdk::Result<T> = core::result::Result<T, radroots_sdk::error::Error>
diff --git a/contracts/api_baselines/radroots_secrets.txt b/contracts/api_baselines/radroots_secrets.txt
@@ -0,0 +1,511 @@
+pub mod radroots_secrets
+pub mod radroots_secrets::context
+pub struct radroots_secrets::context::EnvelopeContext
+impl radroots_secrets::context::EnvelopeContext
+pub fn radroots_secrets::context::EnvelopeContext::authentication_digest(&self) -> [u8; 32]
+pub const fn radroots_secrets::context::EnvelopeContext::new(radroots_secrets::context::EnvelopePurpose, radroots_secrets::context::EnvelopeSubject, radroots_secrets::context::PayloadSchemaId) -> Self
+pub const fn radroots_secrets::context::EnvelopeContext::payload_schema(&self) -> &radroots_secrets::context::PayloadSchemaId
+pub const fn radroots_secrets::context::EnvelopeContext::purpose(&self) -> &radroots_secrets::context::EnvelopePurpose
+pub const fn radroots_secrets::context::EnvelopeContext::subject(&self) -> &radroots_secrets::context::EnvelopeSubject
+pub fn radroots_secrets::context::EnvelopeContext::to_canonical_bytes(&self) -> alloc::vec::Vec<u8>
+impl core::fmt::Debug for radroots_secrets::context::EnvelopeContext
+pub fn radroots_secrets::context::EnvelopeContext::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_secrets::context::EnvelopeContext
+pub fn radroots_secrets::context::EnvelopeContext::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_secrets::context::EnvelopeContext
+pub fn radroots_secrets::context::EnvelopeContext::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_secrets::context::EnvelopePurpose(_)
+impl radroots_secrets::context::EnvelopePurpose
+pub fn radroots_secrets::context::EnvelopePurpose::as_str(&self) -> &str
+pub fn radroots_secrets::context::EnvelopePurpose::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_secrets::error::Error>
+impl core::fmt::Debug for radroots_secrets::context::EnvelopePurpose
+pub fn radroots_secrets::context::EnvelopePurpose::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_secrets::context::EnvelopePurpose
+pub fn radroots_secrets::context::EnvelopePurpose::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_secrets::context::EnvelopeSubject
+impl radroots_secrets::context::EnvelopeSubject
+pub fn radroots_secrets::context::EnvelopeSubject::parse(impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_secrets::error::Error>
+pub fn radroots_secrets::context::EnvelopeSubject::subject_type(&self) -> &str
+pub fn radroots_secrets::context::EnvelopeSubject::value(&self) -> &str
+impl core::fmt::Debug for radroots_secrets::context::EnvelopeSubject
+pub fn radroots_secrets::context::EnvelopeSubject::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_secrets::context::EnvelopeSubject
+pub fn radroots_secrets::context::EnvelopeSubject::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_secrets::context::PayloadSchemaId(_)
+impl radroots_secrets::context::PayloadSchemaId
+pub fn radroots_secrets::context::PayloadSchemaId::as_str(&self) -> &str
+pub fn radroots_secrets::context::PayloadSchemaId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_secrets::error::Error>
+impl core::fmt::Debug for radroots_secrets::context::PayloadSchemaId
+pub fn radroots_secrets::context::PayloadSchemaId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_secrets::context::PayloadSchemaId
+pub fn radroots_secrets::context::PayloadSchemaId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub const radroots_secrets::context::ENVELOPE_CONTEXT_DOMAIN: &[u8]
+pub const radroots_secrets::context::ENVELOPE_CONTEXT_VERSION: u16
+pub const radroots_secrets::context::ENVELOPE_PURPOSE_MAX_BYTES: usize
+pub const radroots_secrets::context::ENVELOPE_SUBJECT_TYPE_MAX_BYTES: usize
+pub const radroots_secrets::context::ENVELOPE_SUBJECT_VALUE_MAX_BYTES: usize
+pub const radroots_secrets::context::PAYLOAD_SCHEMA_MAX_BYTES: usize
+pub mod radroots_secrets::envelope
+#[non_exhaustive] pub enum radroots_secrets::envelope::Cipher
+pub radroots_secrets::envelope::Cipher::XChaCha20Poly1305
+#[non_exhaustive] pub enum radroots_secrets::envelope::KeySource
+pub radroots_secrets::envelope::KeySource::ProviderWrapped
+pub struct radroots_secrets::envelope::EncryptedEnvelope
+impl radroots_secrets::envelope::EncryptedEnvelope
+pub const fn radroots_secrets::envelope::EncryptedEnvelope::cipher(&self) -> radroots_secrets::envelope::Cipher
+pub const fn radroots_secrets::envelope::EncryptedEnvelope::context(&self) -> core::option::Option<&radroots_secrets::context::EnvelopeContext>
+pub fn radroots_secrets::envelope::EncryptedEnvelope::decode(&[u8]) -> core::result::Result<Self, radroots_secrets::error::Error>
+pub fn radroots_secrets::envelope::EncryptedEnvelope::encode(&self) -> core::result::Result<alloc::vec::Vec<u8>, radroots_secrets::error::Error>
+pub const fn radroots_secrets::envelope::EncryptedEnvelope::key_source(&self) -> radroots_secrets::envelope::KeySource
+pub async fn radroots_secrets::envelope::EncryptedEnvelope::open(&self, &dyn radroots_secrets::wrapping::KeyWrapping, &radroots_secrets::context::EnvelopeContext) -> core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>
+pub async fn radroots_secrets::envelope::EncryptedEnvelope::open_legacy_v1(&self, &dyn radroots_secrets::wrapping::KeyWrapping, &radroots_secrets::envelope::LegacyV1ResealAuthority, &radroots_secrets::id::SecretRef, &radroots_secrets::context::EnvelopeContext) -> core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>
+pub const fn radroots_secrets::envelope::EncryptedEnvelope::reference(&self) -> &radroots_secrets::id::SecretRef
+pub async fn radroots_secrets::envelope::EncryptedEnvelope::reseal_legacy_v1<V>(&self, &dyn radroots_secrets::wrapping::KeyWrapping, &radroots_secrets::envelope::LegacyV1ResealAuthority, &radroots_secrets::id::SecretRef, radroots_secrets::id::SecretRef, radroots_secrets::context::EnvelopeContext, &V, radroots_secrets::envelope::SealMaterial) -> core::result::Result<radroots_secrets::envelope::LegacyV1ResealResult, radroots_secrets::error::Error> where V: core::ops::function::Fn(&[u8]) -> bool + core::marker::Send + core::marker::Sync
+pub async fn radroots_secrets::envelope::EncryptedEnvelope::seal(&dyn radroots_secrets::wrapping::KeyWrapping, radroots_secrets::envelope::SealRequest<'_>) -> core::result::Result<Self, radroots_secrets::error::Error>
+pub const fn radroots_secrets::envelope::EncryptedEnvelope::version(&self) -> u16
+impl core::fmt::Debug for radroots_secrets::envelope::EncryptedEnvelope
+pub fn radroots_secrets::envelope::EncryptedEnvelope::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_secrets::envelope::EncryptedEnvelope
+pub fn radroots_secrets::envelope::EncryptedEnvelope::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_secrets::envelope::EncryptedEnvelope
+pub fn radroots_secrets::envelope::EncryptedEnvelope::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_secrets::envelope::LegacyV1ResealAuthority
+impl radroots_secrets::envelope::LegacyV1ResealAuthority
+pub const fn radroots_secrets::envelope::LegacyV1ResealAuthority::new() -> Self
+impl core::fmt::Debug for radroots_secrets::envelope::LegacyV1ResealAuthority
+pub fn radroots_secrets::envelope::LegacyV1ResealAuthority::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_secrets::envelope::LegacyV1ResealResult
+impl radroots_secrets::envelope::LegacyV1ResealResult
+pub const fn radroots_secrets::envelope::LegacyV1ResealResult::envelope(&self) -> &radroots_secrets::envelope::EncryptedEnvelope
+pub fn radroots_secrets::envelope::LegacyV1ResealResult::into_envelope(self) -> radroots_secrets::envelope::EncryptedEnvelope
+pub const fn radroots_secrets::envelope::LegacyV1ResealResult::plaintext_commitment(&self) -> &[u8; 32]
+impl core::fmt::Debug for radroots_secrets::envelope::LegacyV1ResealResult
+pub fn radroots_secrets::envelope::LegacyV1ResealResult::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_secrets::envelope::Nonce(_)
+impl radroots_secrets::envelope::Nonce
+pub const fn radroots_secrets::envelope::Nonce::as_bytes(&self) -> &[u8; 24]
+pub const fn radroots_secrets::envelope::Nonce::new([u8; 24]) -> Self
+impl core::fmt::Debug for radroots_secrets::envelope::Nonce
+pub fn radroots_secrets::envelope::Nonce::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_secrets::envelope::SealMaterial
+impl radroots_secrets::envelope::SealMaterial
+pub const fn radroots_secrets::envelope::SealMaterial::new(radroots_secrets::wrapping::SecretMaterial, radroots_secrets::envelope::Nonce) -> Self
+impl core::fmt::Debug for radroots_secrets::envelope::SealMaterial
+pub fn radroots_secrets::envelope::SealMaterial::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_secrets::envelope::SealRequest<'a>
+impl<'a> radroots_secrets::envelope::SealRequest<'a>
+pub const fn radroots_secrets::envelope::SealRequest<'a>::new(radroots_secrets::id::SecretRef, radroots_secrets::context::EnvelopeContext, &'a radroots_secrets::wrapping::SecretMaterial, radroots_secrets::envelope::SealMaterial) -> Self
+impl core::fmt::Debug for radroots_secrets::envelope::SealRequest<'_>
+pub fn radroots_secrets::envelope::SealRequest<'_>::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub const radroots_secrets::envelope::ENVELOPE_MAX_BYTES: usize
+pub const radroots_secrets::envelope::ENVELOPE_VERSION: u16
+pub const radroots_secrets::envelope::LEGACY_ENVELOPE_VERSION: u16
+pub mod radroots_secrets::error
+#[non_exhaustive] pub enum radroots_secrets::error::ContextField
+pub radroots_secrets::error::ContextField::PayloadSchema
+pub radroots_secrets::error::ContextField::Purpose
+pub radroots_secrets::error::ContextField::SubjectType
+pub radroots_secrets::error::ContextField::SubjectValue
+#[non_exhaustive] pub enum radroots_secrets::error::ContextValueError
+pub radroots_secrets::error::ContextValueError::Empty
+pub radroots_secrets::error::ContextValueError::NonCanonical
+pub radroots_secrets::error::ContextValueError::TooLong
+pub radroots_secrets::error::ContextValueError::TooLong::actual_bytes: usize
+pub radroots_secrets::error::ContextValueError::TooLong::max_bytes: usize
+impl core::fmt::Display for radroots_secrets::error::ContextValueError
+pub fn radroots_secrets::error::ContextValueError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub enum radroots_secrets::error::Error
+pub radroots_secrets::error::Error::BackendFailure
+pub radroots_secrets::error::Error::BackendFailure::backend: radroots_secrets::id::BackendKind
+pub radroots_secrets::error::Error::BackendFailure::operation: radroots_secrets::error::Operation
+pub radroots_secrets::error::Error::BackendMismatch
+pub radroots_secrets::error::Error::BackendMismatch::provider: radroots_secrets::id::BackendKind
+pub radroots_secrets::error::Error::BackendMismatch::reference: radroots_secrets::id::BackendKind
+pub radroots_secrets::error::Error::BackendUnavailable
+pub radroots_secrets::error::Error::BackendUnavailable::backend: radroots_secrets::id::BackendKind
+pub radroots_secrets::error::Error::ContextMismatch
+pub radroots_secrets::error::Error::DecryptFailed
+pub radroots_secrets::error::Error::EncryptFailed
+pub radroots_secrets::error::Error::EnvelopeMalformed
+pub radroots_secrets::error::Error::EnvelopeTooLarge
+pub radroots_secrets::error::Error::EnvelopeTooLarge::actual_bytes: usize
+pub radroots_secrets::error::Error::EnvelopeTooLarge::max_bytes: usize
+pub radroots_secrets::error::Error::InsecurePermissions
+pub radroots_secrets::error::Error::InvalidContextValue
+pub radroots_secrets::error::Error::InvalidContextValue::field: radroots_secrets::error::ContextField
+pub radroots_secrets::error::Error::InvalidContextValue::reason: radroots_secrets::error::ContextValueError
+pub radroots_secrets::error::Error::InvalidDataKeyLength
+pub radroots_secrets::error::Error::InvalidDataKeyLength::actual_bytes: usize
+pub radroots_secrets::error::Error::InvalidKeyVersion
+pub radroots_secrets::error::Error::InvalidRotation
+pub radroots_secrets::error::Error::InvalidSecretId(radroots_secrets::error::SecretIdError)
+pub radroots_secrets::error::Error::InvalidSecretLength
+pub radroots_secrets::error::Error::InvalidSecretLength::actual_bytes: usize
+pub radroots_secrets::error::Error::InvalidSecretLength::max_bytes: usize
+pub radroots_secrets::error::Error::InvalidServiceName
+pub radroots_secrets::error::Error::InvalidWrappedLength
+pub radroots_secrets::error::Error::InvalidWrappedLength::actual_bytes: usize
+pub radroots_secrets::error::Error::InvalidWrappedLength::max_bytes: usize
+pub radroots_secrets::error::Error::LegacyEntropyReuse
+pub radroots_secrets::error::Error::LegacyEnvelopeDenied
+pub radroots_secrets::error::Error::LegacyPayloadValidationFailed
+pub radroots_secrets::error::Error::PolicyUnsupported
+pub radroots_secrets::error::Error::PolicyUnsupported::backend: radroots_secrets::id::BackendKind
+pub radroots_secrets::error::Error::PolicyUnsupported::requirement: radroots_secrets::error::PolicyRequirement
+pub radroots_secrets::error::Error::ProviderReferenceMismatch
+pub radroots_secrets::error::Error::SecretAlreadyExists
+pub radroots_secrets::error::Error::SecretAlreadyExists::backend: radroots_secrets::id::BackendKind
+pub radroots_secrets::error::Error::SecretAlreadyExists::key_version: u32
+pub radroots_secrets::error::Error::SecretNotFound
+pub radroots_secrets::error::Error::SecretNotFound::backend: radroots_secrets::id::BackendKind
+pub radroots_secrets::error::Error::SecretNotFound::key_version: u32
+pub radroots_secrets::error::Error::UnsafePath
+pub radroots_secrets::error::Error::UnsupportedBackend
+pub radroots_secrets::error::Error::UnsupportedBackend::backend: u8
+pub radroots_secrets::error::Error::UnsupportedCipher
+pub radroots_secrets::error::Error::UnsupportedCipher::cipher: u8
+pub radroots_secrets::error::Error::UnsupportedContextVersion
+pub radroots_secrets::error::Error::UnsupportedContextVersion::version: u16
+pub radroots_secrets::error::Error::UnsupportedEnvelopeVersion
+pub radroots_secrets::error::Error::UnsupportedEnvelopeVersion::version: u16
+pub radroots_secrets::error::Error::UnsupportedKeySource
+pub radroots_secrets::error::Error::UnsupportedKeySource::key_source: u8
+impl core::error::Error for radroots_secrets::error::Error
+impl core::fmt::Display for radroots_secrets::error::Error
+pub fn radroots_secrets::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub enum radroots_secrets::error::Operation
+pub radroots_secrets::error::Operation::Open
+pub radroots_secrets::error::Operation::Provision
+pub radroots_secrets::error::Operation::Read
+pub radroots_secrets::error::Operation::Remove
+pub radroots_secrets::error::Operation::Rotate
+pub radroots_secrets::error::Operation::Unwrap
+pub radroots_secrets::error::Operation::Wrap
+pub radroots_secrets::error::Operation::Write
+#[non_exhaustive] pub enum radroots_secrets::error::PolicyRequirement
+pub radroots_secrets::error::PolicyRequirement::DeviceLocal
+pub radroots_secrets::error::PolicyRequirement::HardwareBacked
+pub radroots_secrets::error::PolicyRequirement::UserPresence
+#[non_exhaustive] pub enum radroots_secrets::error::SecretIdError
+pub radroots_secrets::error::SecretIdError::Empty
+pub radroots_secrets::error::SecretIdError::InvalidCharacter
+pub radroots_secrets::error::SecretIdError::InvalidCharacter::byte_offset: usize
+pub radroots_secrets::error::SecretIdError::TooLong
+pub radroots_secrets::error::SecretIdError::TooLong::actual_bytes: usize
+pub radroots_secrets::error::SecretIdError::TooLong::max_bytes: usize
+impl core::fmt::Display for radroots_secrets::error::SecretIdError
+pub fn radroots_secrets::error::SecretIdError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub mod radroots_secrets::file
+#[non_exhaustive] pub enum radroots_secrets::file::FileOpenMode
+pub radroots_secrets::file::FileOpenMode::CreateNew
+pub radroots_secrets::file::FileOpenMode::OpenExisting
+pub struct radroots_secrets::file::FileProvider
+impl radroots_secrets::file::FileProvider
+pub fn radroots_secrets::file::FileProvider::contains(&self, &radroots_secrets::id::SecretRef) -> core::result::Result<bool, radroots_secrets::error::Error>
+pub fn radroots_secrets::file::FileProvider::open(impl core::convert::AsRef<std::path::Path>, radroots_secrets::file::FileOpenMode, radroots_secrets::wrapping::SecretMaterial) -> core::result::Result<Self, radroots_secrets::error::Error>
+pub fn radroots_secrets::file::FileProvider::provision(&self, &radroots_secrets::id::SecretRef, &radroots_secrets::wrapping::SecretMaterial, radroots_secrets::envelope::Nonce) -> core::result::Result<(), radroots_secrets::error::Error>
+pub fn radroots_secrets::file::FileProvider::remove(&self, &radroots_secrets::id::SecretRef) -> core::result::Result<bool, radroots_secrets::error::Error>
+pub fn radroots_secrets::file::FileProvider::rotate(&self, &radroots_secrets::id::SecretRef, &radroots_secrets::id::SecretRef, &radroots_secrets::wrapping::SecretMaterial, radroots_secrets::envelope::Nonce) -> core::result::Result<(), radroots_secrets::error::Error>
+impl core::fmt::Debug for radroots_secrets::file::FileProvider
+pub fn radroots_secrets::file::FileProvider::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl radroots_secrets::provider::SecretProvider for radroots_secrets::file::FileProvider
+pub fn radroots_secrets::file::FileProvider::backend_kind(&self) -> radroots_secrets::id::BackendKind
+pub fn radroots_secrets::file::FileProvider::capabilities(&self) -> radroots_secrets::provider::SecretCapabilities
+impl radroots_secrets::wrapping::KeyWrapping for radroots_secrets::file::FileProvider
+pub fn radroots_secrets::file::FileProvider::unwrap<'a>(&'a self, radroots_secrets::wrapping::UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::file::FileProvider::unwrap_legacy_v1<'a>(&'a self, radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::file::FileProvider::wrap<'a>(&'a self, radroots_secrets::wrapping::WrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::WrappedSecret, radroots_secrets::error::Error>>
+pub mod radroots_secrets::id
+#[non_exhaustive] pub enum radroots_secrets::id::BackendKind
+pub radroots_secrets::id::BackendKind::External
+pub radroots_secrets::id::BackendKind::File
+pub radroots_secrets::id::BackendKind::Keyring
+pub radroots_secrets::id::BackendKind::Memory
+pub struct radroots_secrets::id::KeyVersion(_)
+impl radroots_secrets::id::KeyVersion
+pub const fn radroots_secrets::id::KeyVersion::get(self) -> u32
+pub const fn radroots_secrets::id::KeyVersion::new(u32) -> core::result::Result<Self, radroots_secrets::error::Error>
+pub struct radroots_secrets::id::SecretId(_)
+impl radroots_secrets::id::SecretId
+pub fn radroots_secrets::id::SecretId::as_str(&self) -> &str
+pub fn radroots_secrets::id::SecretId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_secrets::error::Error>
+impl core::fmt::Debug for radroots_secrets::id::SecretId
+pub fn radroots_secrets::id::SecretId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_secrets::id::SecretId
+pub fn radroots_secrets::id::SecretId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_secrets::id::SecretId
+pub type radroots_secrets::id::SecretId::Err = radroots_secrets::error::Error
+pub fn radroots_secrets::id::SecretId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_secrets::id::SecretId
+pub fn radroots_secrets::id::SecretId::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_secrets::id::SecretId
+pub fn radroots_secrets::id::SecretId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_secrets::id::SecretRef
+impl radroots_secrets::id::SecretRef
+pub const fn radroots_secrets::id::SecretRef::backend(&self) -> radroots_secrets::id::BackendKind
+pub const fn radroots_secrets::id::SecretRef::id(&self) -> &radroots_secrets::id::SecretId
+pub const fn radroots_secrets::id::SecretRef::key_version(&self) -> radroots_secrets::id::KeyVersion
+pub const fn radroots_secrets::id::SecretRef::new(radroots_secrets::id::SecretId, radroots_secrets::id::BackendKind, radroots_secrets::id::KeyVersion) -> Self
+impl core::fmt::Debug for radroots_secrets::id::SecretRef
+pub fn radroots_secrets::id::SecretRef::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub const radroots_secrets::id::SECRET_ID_MAX_BYTES: usize
+pub mod radroots_secrets::keyring
+pub struct radroots_secrets::keyring::KeyringProvider
+impl radroots_secrets::keyring::KeyringProvider
+pub fn radroots_secrets::keyring::KeyringProvider::new(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_secrets::error::Error>
+pub fn radroots_secrets::keyring::KeyringProvider::provision(&self, &radroots_secrets::id::SecretRef, &radroots_secrets::wrapping::SecretMaterial) -> core::result::Result<(), radroots_secrets::error::Error>
+pub fn radroots_secrets::keyring::KeyringProvider::remove(&self, &radroots_secrets::id::SecretRef) -> core::result::Result<bool, radroots_secrets::error::Error>
+pub fn radroots_secrets::keyring::KeyringProvider::rotate(&self, &radroots_secrets::id::SecretRef, &radroots_secrets::id::SecretRef, &radroots_secrets::wrapping::SecretMaterial) -> core::result::Result<(), radroots_secrets::error::Error>
+impl core::fmt::Debug for radroots_secrets::keyring::KeyringProvider
+pub fn radroots_secrets::keyring::KeyringProvider::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl radroots_secrets::provider::SecretProvider for radroots_secrets::keyring::KeyringProvider
+pub fn radroots_secrets::keyring::KeyringProvider::backend_kind(&self) -> radroots_secrets::id::BackendKind
+pub fn radroots_secrets::keyring::KeyringProvider::capabilities(&self) -> radroots_secrets::provider::SecretCapabilities
+impl radroots_secrets::wrapping::KeyWrapping for radroots_secrets::keyring::KeyringProvider
+pub fn radroots_secrets::keyring::KeyringProvider::unwrap<'a>(&'a self, radroots_secrets::wrapping::UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::keyring::KeyringProvider::unwrap_legacy_v1<'a>(&'a self, radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::keyring::KeyringProvider::wrap<'a>(&'a self, radroots_secrets::wrapping::WrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::WrappedSecret, radroots_secrets::error::Error>>
+pub mod radroots_secrets::memory
+pub struct radroots_secrets::memory::MemoryProvider
+impl radroots_secrets::memory::MemoryProvider
+pub fn radroots_secrets::memory::MemoryProvider::contains(&self, &radroots_secrets::id::SecretRef) -> core::result::Result<bool, radroots_secrets::error::Error>
+pub fn radroots_secrets::memory::MemoryProvider::new() -> Self
+pub fn radroots_secrets::memory::MemoryProvider::provision(&self, &radroots_secrets::id::SecretRef, radroots_secrets::wrapping::SecretMaterial) -> core::result::Result<(), radroots_secrets::error::Error>
+pub fn radroots_secrets::memory::MemoryProvider::remove(&self, &radroots_secrets::id::SecretRef) -> core::result::Result<bool, radroots_secrets::error::Error>
+pub fn radroots_secrets::memory::MemoryProvider::rotate(&self, &radroots_secrets::id::SecretRef, &radroots_secrets::id::SecretRef, radroots_secrets::wrapping::SecretMaterial) -> core::result::Result<(), radroots_secrets::error::Error>
+impl core::fmt::Debug for radroots_secrets::memory::MemoryProvider
+pub fn radroots_secrets::memory::MemoryProvider::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl radroots_secrets::provider::SecretProvider for radroots_secrets::memory::MemoryProvider
+pub fn radroots_secrets::memory::MemoryProvider::backend_kind(&self) -> radroots_secrets::id::BackendKind
+pub fn radroots_secrets::memory::MemoryProvider::capabilities(&self) -> radroots_secrets::provider::SecretCapabilities
+impl radroots_secrets::wrapping::KeyWrapping for radroots_secrets::memory::MemoryProvider
+pub fn radroots_secrets::memory::MemoryProvider::unwrap<'a>(&'a self, radroots_secrets::wrapping::UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::memory::MemoryProvider::unwrap_legacy_v1<'a>(&'a self, radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::memory::MemoryProvider::wrap<'a>(&'a self, radroots_secrets::wrapping::WrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::WrappedSecret, radroots_secrets::error::Error>>
+pub mod radroots_secrets::provider
+#[non_exhaustive] pub enum radroots_secrets::provider::CapabilitySupport
+pub radroots_secrets::provider::CapabilitySupport::Supported
+pub radroots_secrets::provider::CapabilitySupport::Unavailable
+#[non_exhaustive] pub enum radroots_secrets::provider::HardwarePolicy
+pub radroots_secrets::provider::HardwarePolicy::Any
+pub radroots_secrets::provider::HardwarePolicy::PreferHardwareBacked
+pub radroots_secrets::provider::HardwarePolicy::RequireHardwareBacked
+#[non_exhaustive] pub enum radroots_secrets::provider::ResidencyPolicy
+pub radroots_secrets::provider::ResidencyPolicy::Any
+pub radroots_secrets::provider::ResidencyPolicy::DeviceLocal
+#[non_exhaustive] pub enum radroots_secrets::provider::ResidencySupport
+pub radroots_secrets::provider::ResidencySupport::DeviceLocal
+pub radroots_secrets::provider::ResidencySupport::UserProfile
+pub radroots_secrets::provider::ResidencySupport::Volatile
+#[non_exhaustive] pub enum radroots_secrets::provider::UserPresencePolicy
+pub radroots_secrets::provider::UserPresencePolicy::NotRequired
+pub radroots_secrets::provider::UserPresencePolicy::Required
+pub struct radroots_secrets::provider::AccessPolicy
+impl radroots_secrets::provider::AccessPolicy
+pub const fn radroots_secrets::provider::AccessPolicy::new(radroots_secrets::provider::ResidencyPolicy, radroots_secrets::provider::UserPresencePolicy, radroots_secrets::provider::HardwarePolicy) -> Self
+pub const fn radroots_secrets::provider::AccessPolicy::standard() -> Self
+pub struct radroots_secrets::provider::SecretCapabilities
+impl radroots_secrets::provider::SecretCapabilities
+pub const fn radroots_secrets::provider::SecretCapabilities::available(radroots_secrets::provider::ResidencySupport, radroots_secrets::provider::CapabilitySupport, radroots_secrets::provider::CapabilitySupport) -> Self
+pub const fn radroots_secrets::provider::SecretCapabilities::hardware_backed(self) -> radroots_secrets::provider::CapabilitySupport
+pub const fn radroots_secrets::provider::SecretCapabilities::is_available(self) -> bool
+pub const fn radroots_secrets::provider::SecretCapabilities::residency(self) -> radroots_secrets::provider::ResidencySupport
+pub const fn radroots_secrets::provider::SecretCapabilities::unavailable() -> Self
+pub const fn radroots_secrets::provider::SecretCapabilities::user_presence(self) -> radroots_secrets::provider::CapabilitySupport
+pub struct radroots_secrets::provider::SelectionPolicy
+impl radroots_secrets::provider::SelectionPolicy
+pub const fn radroots_secrets::provider::SelectionPolicy::new(radroots_secrets::id::BackendKind, radroots_secrets::provider::AccessPolicy) -> Self
+pub fn radroots_secrets::provider::SelectionPolicy::select<'a>(self, &'a [&'a dyn radroots_secrets::provider::SecretProvider]) -> core::result::Result<&'a dyn radroots_secrets::provider::SecretProvider, radroots_secrets::error::Error>
+pub trait radroots_secrets::provider::SecretProvider: radroots_secrets::wrapping::KeyWrapping + core::marker::Send + core::marker::Sync
+pub fn radroots_secrets::provider::SecretProvider::backend_kind(&self) -> radroots_secrets::id::BackendKind
+pub fn radroots_secrets::provider::SecretProvider::capabilities(&self) -> radroots_secrets::provider::SecretCapabilities
+impl radroots_secrets::provider::SecretProvider for radroots_secrets::file::FileProvider
+pub fn radroots_secrets::file::FileProvider::backend_kind(&self) -> radroots_secrets::id::BackendKind
+pub fn radroots_secrets::file::FileProvider::capabilities(&self) -> radroots_secrets::provider::SecretCapabilities
+impl radroots_secrets::provider::SecretProvider for radroots_secrets::keyring::KeyringProvider
+pub fn radroots_secrets::keyring::KeyringProvider::backend_kind(&self) -> radroots_secrets::id::BackendKind
+pub fn radroots_secrets::keyring::KeyringProvider::capabilities(&self) -> radroots_secrets::provider::SecretCapabilities
+impl radroots_secrets::provider::SecretProvider for radroots_secrets::memory::MemoryProvider
+pub fn radroots_secrets::memory::MemoryProvider::backend_kind(&self) -> radroots_secrets::id::BackendKind
+pub fn radroots_secrets::memory::MemoryProvider::capabilities(&self) -> radroots_secrets::provider::SecretCapabilities
+pub mod radroots_secrets::wrapping
+pub struct radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>
+impl<'a> radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>
+pub const fn radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>::reference(&self) -> &'a radroots_secrets::id::SecretRef
+pub const fn radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>::wrapped(&self) -> &'a radroots_secrets::wrapping::WrappedSecret
+impl core::fmt::Debug for radroots_secrets::wrapping::LegacyV1UnwrapRequest<'_>
+pub fn radroots_secrets::wrapping::LegacyV1UnwrapRequest<'_>::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_secrets::wrapping::SecretMaterial(_)
+impl radroots_secrets::wrapping::SecretMaterial
+pub fn radroots_secrets::wrapping::SecretMaterial::expose_secret<T>(&self, impl core::ops::function::FnOnce(&[u8]) -> T) -> T
+pub fn radroots_secrets::wrapping::SecretMaterial::from_slice(&[u8]) -> core::result::Result<Self, radroots_secrets::error::Error>
+pub fn radroots_secrets::wrapping::SecretMaterial::is_empty(&self) -> bool
+pub fn radroots_secrets::wrapping::SecretMaterial::len(&self) -> usize
+impl core::fmt::Debug for radroots_secrets::wrapping::SecretMaterial
+pub fn radroots_secrets::wrapping::SecretMaterial::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_secrets::wrapping::UnwrapRequest<'a>
+impl<'a> radroots_secrets::wrapping::UnwrapRequest<'a>
+pub const fn radroots_secrets::wrapping::UnwrapRequest<'a>::context(&self) -> &'a radroots_secrets::context::EnvelopeContext
+pub const fn radroots_secrets::wrapping::UnwrapRequest<'a>::new(&'a radroots_secrets::id::SecretRef, &'a radroots_secrets::context::EnvelopeContext, &'a radroots_secrets::wrapping::WrappedSecret) -> Self
+pub const fn radroots_secrets::wrapping::UnwrapRequest<'a>::reference(&self) -> &'a radroots_secrets::id::SecretRef
+pub const fn radroots_secrets::wrapping::UnwrapRequest<'a>::wrapped(&self) -> &'a radroots_secrets::wrapping::WrappedSecret
+pub struct radroots_secrets::wrapping::WrapRequest<'a>
+impl<'a> radroots_secrets::wrapping::WrapRequest<'a>
+pub const fn radroots_secrets::wrapping::WrapRequest<'a>::context(&self) -> &'a radroots_secrets::context::EnvelopeContext
+pub const fn radroots_secrets::wrapping::WrapRequest<'a>::new(&'a radroots_secrets::id::SecretRef, &'a radroots_secrets::context::EnvelopeContext, &'a radroots_secrets::wrapping::SecretMaterial) -> Self
+pub const fn radroots_secrets::wrapping::WrapRequest<'a>::plaintext(&self) -> &'a radroots_secrets::wrapping::SecretMaterial
+pub const fn radroots_secrets::wrapping::WrapRequest<'a>::reference(&self) -> &'a radroots_secrets::id::SecretRef
+pub struct radroots_secrets::wrapping::WrappedSecret(_)
+impl radroots_secrets::wrapping::WrappedSecret
+pub fn radroots_secrets::wrapping::WrappedSecret::as_bytes(&self) -> &[u8]
+pub fn radroots_secrets::wrapping::WrappedSecret::from_bytes(impl core::convert::Into<alloc::vec::Vec<u8>>) -> core::result::Result<Self, radroots_secrets::error::Error>
+impl core::fmt::Debug for radroots_secrets::wrapping::WrappedSecret
+pub fn radroots_secrets::wrapping::WrappedSecret::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub const radroots_secrets::wrapping::SECRET_MATERIAL_MAX_BYTES: usize
+pub const radroots_secrets::wrapping::WRAPPED_SECRET_MAX_BYTES: usize
+pub trait radroots_secrets::wrapping::KeyWrapping: core::marker::Send + core::marker::Sync
+pub fn radroots_secrets::wrapping::KeyWrapping::unwrap<'a>(&'a self, radroots_secrets::wrapping::UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::wrapping::KeyWrapping::unwrap_legacy_v1<'a>(&'a self, radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::wrapping::KeyWrapping::wrap<'a>(&'a self, radroots_secrets::wrapping::WrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::WrappedSecret, radroots_secrets::error::Error>>
+impl radroots_secrets::wrapping::KeyWrapping for radroots_secrets::file::FileProvider
+pub fn radroots_secrets::file::FileProvider::unwrap<'a>(&'a self, radroots_secrets::wrapping::UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::file::FileProvider::unwrap_legacy_v1<'a>(&'a self, radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::file::FileProvider::wrap<'a>(&'a self, radroots_secrets::wrapping::WrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::WrappedSecret, radroots_secrets::error::Error>>
+impl radroots_secrets::wrapping::KeyWrapping for radroots_secrets::keyring::KeyringProvider
+pub fn radroots_secrets::keyring::KeyringProvider::unwrap<'a>(&'a self, radroots_secrets::wrapping::UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::keyring::KeyringProvider::unwrap_legacy_v1<'a>(&'a self, radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::keyring::KeyringProvider::wrap<'a>(&'a self, radroots_secrets::wrapping::WrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::WrappedSecret, radroots_secrets::error::Error>>
+impl radroots_secrets::wrapping::KeyWrapping for radroots_secrets::memory::MemoryProvider
+pub fn radroots_secrets::memory::MemoryProvider::unwrap<'a>(&'a self, radroots_secrets::wrapping::UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::memory::MemoryProvider::unwrap_legacy_v1<'a>(&'a self, radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::memory::MemoryProvider::wrap<'a>(&'a self, radroots_secrets::wrapping::WrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::WrappedSecret, radroots_secrets::error::Error>>
+pub type radroots_secrets::wrapping::BoxFuture<'a, T> = core::pin::Pin<alloc::boxed::Box<(dyn core::future::future::Future<Output = T> + core::marker::Send + 'a)>>
+#[non_exhaustive] pub enum radroots_secrets::Error
+pub radroots_secrets::Error::BackendFailure
+pub radroots_secrets::Error::BackendFailure::backend: radroots_secrets::id::BackendKind
+pub radroots_secrets::Error::BackendFailure::operation: radroots_secrets::error::Operation
+pub radroots_secrets::Error::BackendMismatch
+pub radroots_secrets::Error::BackendMismatch::provider: radroots_secrets::id::BackendKind
+pub radroots_secrets::Error::BackendMismatch::reference: radroots_secrets::id::BackendKind
+pub radroots_secrets::Error::BackendUnavailable
+pub radroots_secrets::Error::BackendUnavailable::backend: radroots_secrets::id::BackendKind
+pub radroots_secrets::Error::ContextMismatch
+pub radroots_secrets::Error::DecryptFailed
+pub radroots_secrets::Error::EncryptFailed
+pub radroots_secrets::Error::EnvelopeMalformed
+pub radroots_secrets::Error::EnvelopeTooLarge
+pub radroots_secrets::Error::EnvelopeTooLarge::actual_bytes: usize
+pub radroots_secrets::Error::EnvelopeTooLarge::max_bytes: usize
+pub radroots_secrets::Error::InsecurePermissions
+pub radroots_secrets::Error::InvalidContextValue
+pub radroots_secrets::Error::InvalidContextValue::field: radroots_secrets::error::ContextField
+pub radroots_secrets::Error::InvalidContextValue::reason: radroots_secrets::error::ContextValueError
+pub radroots_secrets::Error::InvalidDataKeyLength
+pub radroots_secrets::Error::InvalidDataKeyLength::actual_bytes: usize
+pub radroots_secrets::Error::InvalidKeyVersion
+pub radroots_secrets::Error::InvalidRotation
+pub radroots_secrets::Error::InvalidSecretId(radroots_secrets::error::SecretIdError)
+pub radroots_secrets::Error::InvalidSecretLength
+pub radroots_secrets::Error::InvalidSecretLength::actual_bytes: usize
+pub radroots_secrets::Error::InvalidSecretLength::max_bytes: usize
+pub radroots_secrets::Error::InvalidServiceName
+pub radroots_secrets::Error::InvalidWrappedLength
+pub radroots_secrets::Error::InvalidWrappedLength::actual_bytes: usize
+pub radroots_secrets::Error::InvalidWrappedLength::max_bytes: usize
+pub radroots_secrets::Error::LegacyEntropyReuse
+pub radroots_secrets::Error::LegacyEnvelopeDenied
+pub radroots_secrets::Error::LegacyPayloadValidationFailed
+pub radroots_secrets::Error::PolicyUnsupported
+pub radroots_secrets::Error::PolicyUnsupported::backend: radroots_secrets::id::BackendKind
+pub radroots_secrets::Error::PolicyUnsupported::requirement: radroots_secrets::error::PolicyRequirement
+pub radroots_secrets::Error::ProviderReferenceMismatch
+pub radroots_secrets::Error::SecretAlreadyExists
+pub radroots_secrets::Error::SecretAlreadyExists::backend: radroots_secrets::id::BackendKind
+pub radroots_secrets::Error::SecretAlreadyExists::key_version: u32
+pub radroots_secrets::Error::SecretNotFound
+pub radroots_secrets::Error::SecretNotFound::backend: radroots_secrets::id::BackendKind
+pub radroots_secrets::Error::SecretNotFound::key_version: u32
+pub radroots_secrets::Error::UnsafePath
+pub radroots_secrets::Error::UnsupportedBackend
+pub radroots_secrets::Error::UnsupportedBackend::backend: u8
+pub radroots_secrets::Error::UnsupportedCipher
+pub radroots_secrets::Error::UnsupportedCipher::cipher: u8
+pub radroots_secrets::Error::UnsupportedContextVersion
+pub radroots_secrets::Error::UnsupportedContextVersion::version: u16
+pub radroots_secrets::Error::UnsupportedEnvelopeVersion
+pub radroots_secrets::Error::UnsupportedEnvelopeVersion::version: u16
+pub radroots_secrets::Error::UnsupportedKeySource
+pub radroots_secrets::Error::UnsupportedKeySource::key_source: u8
+impl core::error::Error for radroots_secrets::error::Error
+impl core::fmt::Display for radroots_secrets::error::Error
+pub fn radroots_secrets::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_secrets::EncryptedEnvelope
+impl radroots_secrets::envelope::EncryptedEnvelope
+pub const fn radroots_secrets::envelope::EncryptedEnvelope::cipher(&self) -> radroots_secrets::envelope::Cipher
+pub const fn radroots_secrets::envelope::EncryptedEnvelope::context(&self) -> core::option::Option<&radroots_secrets::context::EnvelopeContext>
+pub fn radroots_secrets::envelope::EncryptedEnvelope::decode(&[u8]) -> core::result::Result<Self, radroots_secrets::error::Error>
+pub fn radroots_secrets::envelope::EncryptedEnvelope::encode(&self) -> core::result::Result<alloc::vec::Vec<u8>, radroots_secrets::error::Error>
+pub const fn radroots_secrets::envelope::EncryptedEnvelope::key_source(&self) -> radroots_secrets::envelope::KeySource
+pub async fn radroots_secrets::envelope::EncryptedEnvelope::open(&self, &dyn radroots_secrets::wrapping::KeyWrapping, &radroots_secrets::context::EnvelopeContext) -> core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>
+pub async fn radroots_secrets::envelope::EncryptedEnvelope::open_legacy_v1(&self, &dyn radroots_secrets::wrapping::KeyWrapping, &radroots_secrets::envelope::LegacyV1ResealAuthority, &radroots_secrets::id::SecretRef, &radroots_secrets::context::EnvelopeContext) -> core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>
+pub const fn radroots_secrets::envelope::EncryptedEnvelope::reference(&self) -> &radroots_secrets::id::SecretRef
+pub async fn radroots_secrets::envelope::EncryptedEnvelope::reseal_legacy_v1<V>(&self, &dyn radroots_secrets::wrapping::KeyWrapping, &radroots_secrets::envelope::LegacyV1ResealAuthority, &radroots_secrets::id::SecretRef, radroots_secrets::id::SecretRef, radroots_secrets::context::EnvelopeContext, &V, radroots_secrets::envelope::SealMaterial) -> core::result::Result<radroots_secrets::envelope::LegacyV1ResealResult, radroots_secrets::error::Error> where V: core::ops::function::Fn(&[u8]) -> bool + core::marker::Send + core::marker::Sync
+pub async fn radroots_secrets::envelope::EncryptedEnvelope::seal(&dyn radroots_secrets::wrapping::KeyWrapping, radroots_secrets::envelope::SealRequest<'_>) -> core::result::Result<Self, radroots_secrets::error::Error>
+pub const fn radroots_secrets::envelope::EncryptedEnvelope::version(&self) -> u16
+impl core::fmt::Debug for radroots_secrets::envelope::EncryptedEnvelope
+pub fn radroots_secrets::envelope::EncryptedEnvelope::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_secrets::envelope::EncryptedEnvelope
+pub fn radroots_secrets::envelope::EncryptedEnvelope::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_secrets::envelope::EncryptedEnvelope
+pub fn radroots_secrets::envelope::EncryptedEnvelope::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_secrets::SecretId(_)
+impl radroots_secrets::id::SecretId
+pub fn radroots_secrets::id::SecretId::as_str(&self) -> &str
+pub fn radroots_secrets::id::SecretId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_secrets::error::Error>
+impl core::fmt::Debug for radroots_secrets::id::SecretId
+pub fn radroots_secrets::id::SecretId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_secrets::id::SecretId
+pub fn radroots_secrets::id::SecretId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_secrets::id::SecretId
+pub type radroots_secrets::id::SecretId::Err = radroots_secrets::error::Error
+pub fn radroots_secrets::id::SecretId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_secrets::id::SecretId
+pub fn radroots_secrets::id::SecretId::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_secrets::id::SecretId
+pub fn radroots_secrets::id::SecretId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_secrets::SecretRef
+impl radroots_secrets::id::SecretRef
+pub const fn radroots_secrets::id::SecretRef::backend(&self) -> radroots_secrets::id::BackendKind
+pub const fn radroots_secrets::id::SecretRef::id(&self) -> &radroots_secrets::id::SecretId
+pub const fn radroots_secrets::id::SecretRef::key_version(&self) -> radroots_secrets::id::KeyVersion
+pub const fn radroots_secrets::id::SecretRef::new(radroots_secrets::id::SecretId, radroots_secrets::id::BackendKind, radroots_secrets::id::KeyVersion) -> Self
+impl core::fmt::Debug for radroots_secrets::id::SecretRef
+pub fn radroots_secrets::id::SecretRef::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub trait radroots_secrets::KeyWrapping: core::marker::Send + core::marker::Sync
+pub fn radroots_secrets::KeyWrapping::unwrap<'a>(&'a self, radroots_secrets::wrapping::UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::KeyWrapping::unwrap_legacy_v1<'a>(&'a self, radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::KeyWrapping::wrap<'a>(&'a self, radroots_secrets::wrapping::WrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::WrappedSecret, radroots_secrets::error::Error>>
+impl radroots_secrets::wrapping::KeyWrapping for radroots_secrets::file::FileProvider
+pub fn radroots_secrets::file::FileProvider::unwrap<'a>(&'a self, radroots_secrets::wrapping::UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::file::FileProvider::unwrap_legacy_v1<'a>(&'a self, radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::file::FileProvider::wrap<'a>(&'a self, radroots_secrets::wrapping::WrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::WrappedSecret, radroots_secrets::error::Error>>
+impl radroots_secrets::wrapping::KeyWrapping for radroots_secrets::keyring::KeyringProvider
+pub fn radroots_secrets::keyring::KeyringProvider::unwrap<'a>(&'a self, radroots_secrets::wrapping::UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::keyring::KeyringProvider::unwrap_legacy_v1<'a>(&'a self, radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::keyring::KeyringProvider::wrap<'a>(&'a self, radroots_secrets::wrapping::WrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::WrappedSecret, radroots_secrets::error::Error>>
+impl radroots_secrets::wrapping::KeyWrapping for radroots_secrets::memory::MemoryProvider
+pub fn radroots_secrets::memory::MemoryProvider::unwrap<'a>(&'a self, radroots_secrets::wrapping::UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::memory::MemoryProvider::unwrap_legacy_v1<'a>(&'a self, radroots_secrets::wrapping::LegacyV1UnwrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::SecretMaterial, radroots_secrets::error::Error>>
+pub fn radroots_secrets::memory::MemoryProvider::wrap<'a>(&'a self, radroots_secrets::wrapping::WrapRequest<'a>) -> radroots_secrets::wrapping::BoxFuture<'a, core::result::Result<radroots_secrets::wrapping::WrappedSecret, radroots_secrets::error::Error>>
+pub trait radroots_secrets::SecretProvider: radroots_secrets::wrapping::KeyWrapping + core::marker::Send + core::marker::Sync
+pub fn radroots_secrets::SecretProvider::backend_kind(&self) -> radroots_secrets::id::BackendKind
+pub fn radroots_secrets::SecretProvider::capabilities(&self) -> radroots_secrets::provider::SecretCapabilities
+impl radroots_secrets::provider::SecretProvider for radroots_secrets::file::FileProvider
+pub fn radroots_secrets::file::FileProvider::backend_kind(&self) -> radroots_secrets::id::BackendKind
+pub fn radroots_secrets::file::FileProvider::capabilities(&self) -> radroots_secrets::provider::SecretCapabilities
+impl radroots_secrets::provider::SecretProvider for radroots_secrets::keyring::KeyringProvider
+pub fn radroots_secrets::keyring::KeyringProvider::backend_kind(&self) -> radroots_secrets::id::BackendKind
+pub fn radroots_secrets::keyring::KeyringProvider::capabilities(&self) -> radroots_secrets::provider::SecretCapabilities
+impl radroots_secrets::provider::SecretProvider for radroots_secrets::memory::MemoryProvider
+pub fn radroots_secrets::memory::MemoryProvider::backend_kind(&self) -> radroots_secrets::id::BackendKind
+pub fn radroots_secrets::memory::MemoryProvider::capabilities(&self) -> radroots_secrets::provider::SecretCapabilities
diff --git a/contracts/api_baselines/radroots_signing.txt b/contracts/api_baselines/radroots_signing.txt
@@ -0,0 +1,385 @@
+pub mod radroots_signing
+pub mod radroots_signing::actor
+#[non_exhaustive] pub enum radroots_signing::actor::ActorSelector
+pub radroots_signing::actor::ActorSelector::Account(radroots_identity::account::AccountId)
+pub radroots_signing::actor::ActorSelector::PlanAuthorPublicKey
+pub radroots_signing::actor::ActorSelector::PublicKey(radroots_identity::key::PublicKey)
+pub radroots_signing::actor::ActorSelector::SelectedAccount
+#[non_exhaustive] pub enum radroots_signing::actor::ActorSource
+pub radroots_signing::actor::ActorSource::ExplicitPublicKey
+pub radroots_signing::actor::ActorSource::LocalAccount(radroots_identity::account::AccountId)
+pub radroots_signing::actor::ActorSource::RemoteSigner(radroots_identity::account::AccountId)
+pub radroots_signing::actor::ActorSource::Service(radroots_identity::account::AccountId)
+impl radroots_signing::actor::ActorSource
+pub const fn radroots_signing::actor::ActorSource::account_id(self) -> core::option::Option<radroots_identity::account::AccountId>
+pub struct radroots_signing::actor::Actor
+impl radroots_signing::actor::Actor
+pub const fn radroots_signing::actor::Actor::account_id(&self) -> core::option::Option<radroots_identity::account::AccountId>
+pub fn radroots_signing::actor::Actor::from_public_key_hex<I>(&str, radroots_signing::actor::ActorSource, I) -> core::result::Result<Self, radroots_signing::error::Error> where I: core::iter::traits::collect::IntoIterator<Item = radroots_event::contract::registry_v7::AuthorRole>
+pub fn radroots_signing::actor::Actor::new<I>(radroots_identity::key::PublicKey, radroots_signing::actor::ActorSource, I) -> core::result::Result<Self, radroots_signing::error::Error> where I: core::iter::traits::collect::IntoIterator<Item = radroots_event::contract::registry_v7::AuthorRole>
+pub const fn radroots_signing::actor::Actor::public_key(&self) -> radroots_identity::key::PublicKey
+pub const fn radroots_signing::actor::Actor::roles(&self) -> &alloc::collections::btree::set::BTreeSet<radroots_event::contract::registry_v7::AuthorRole>
+pub fn radroots_signing::actor::Actor::satisfies(&self, radroots_event::contract::registry_v7::AuthorRole) -> bool
+pub const fn radroots_signing::actor::Actor::source(&self) -> radroots_signing::actor::ActorSource
+pub struct radroots_signing::actor::ActorResolutionRequest
+impl radroots_signing::actor::ActorResolutionRequest
+pub const fn radroots_signing::actor::ActorResolutionRequest::expected_public_key(&self) -> radroots_identity::key::PublicKey
+pub const fn radroots_signing::actor::ActorResolutionRequest::new(radroots_signing::actor::ActorSelector, radroots_event::contract::registry_v7::AuthorRole, radroots_identity::key::PublicKey) -> Self
+pub const fn radroots_signing::actor::ActorResolutionRequest::required_role(&self) -> radroots_event::contract::registry_v7::AuthorRole
+pub const fn radroots_signing::actor::ActorResolutionRequest::selector(&self) -> radroots_signing::actor::ActorSelector
+pub mod radroots_signing::authorization
+#[non_exhaustive] pub enum radroots_signing::authorization::CurrentAuthoringDecision
+pub radroots_signing::authorization::CurrentAuthoringDecision::Allowed
+pub radroots_signing::authorization::CurrentAuthoringDecision::AllowedDeprecated
+pub radroots_signing::authorization::CurrentAuthoringDecision::AllowedDeprecated::warning_code: &'static str
+pub radroots_signing::authorization::CurrentAuthoringDecision::Blocked
+pub radroots_signing::authorization::CurrentAuthoringDecision::Blocked::code: &'static str
+pub radroots_signing::authorization::CurrentAuthoringDecision::Revoked
+pub radroots_signing::authorization::CurrentAuthoringDecision::Revoked::code: &'static str
+#[non_exhaustive] pub enum radroots_signing::authorization::DeprecatedPlanPolicy
+pub radroots_signing::authorization::DeprecatedPlanPolicy::Allow
+pub radroots_signing::authorization::DeprecatedPlanPolicy::Deny
+#[non_exhaustive] pub enum radroots_signing::authorization::ManagedSigningPolicy
+pub radroots_signing::authorization::ManagedSigningPolicy::AccountBackedOnly
+pub radroots_signing::authorization::ManagedSigningPolicy::AnyValidatedSource
+pub radroots_signing::authorization::ManagedSigningPolicy::LocalAccountOnly
+impl radroots_signing::authorization::ManagedSigningPolicy
+pub const fn radroots_signing::authorization::ManagedSigningPolicy::permits(self, &radroots_signing::actor::Actor) -> bool
+pub struct radroots_signing::authorization::CurrentRegistryAuthority
+impl radroots_signing::authorization::CurrentAuthoringAuthority for radroots_signing::authorization::CurrentRegistryAuthority
+pub fn radroots_signing::authorization::CurrentRegistryAuthority::evaluate(&self, &radroots_event_codec::authoring::AuthoredEventPlan) -> radroots_signing::authorization::CurrentAuthoringDecision
+pub trait radroots_signing::authorization::CurrentAuthoringAuthority: core::marker::Send + core::marker::Sync
+pub fn radroots_signing::authorization::CurrentAuthoringAuthority::evaluate(&self, &radroots_event_codec::authoring::AuthoredEventPlan) -> radroots_signing::authorization::CurrentAuthoringDecision
+impl radroots_signing::authorization::CurrentAuthoringAuthority for radroots_signing::authorization::CurrentRegistryAuthority
+pub fn radroots_signing::authorization::CurrentRegistryAuthority::evaluate(&self, &radroots_event_codec::authoring::AuthoredEventPlan) -> radroots_signing::authorization::CurrentAuthoringDecision
+pub mod radroots_signing::capability
+#[non_exhaustive] pub enum radroots_signing::capability::CancellationSupport
+pub radroots_signing::capability::CancellationSupport::BeforeAndAfterPublication
+pub radroots_signing::capability::CancellationSupport::BeforePublication
+#[non_exhaustive] pub enum radroots_signing::capability::SignerKind
+pub radroots_signing::capability::SignerKind::HostMediated
+pub radroots_signing::capability::SignerKind::Local
+pub radroots_signing::capability::SignerKind::Remote
+#[non_exhaustive] pub struct radroots_signing::capability::SignerCapability
+impl radroots_signing::capability::SignerCapability
+pub const fn radroots_signing::capability::SignerCapability::cancellation(self) -> radroots_signing::capability::CancellationSupport
+pub const fn radroots_signing::capability::SignerCapability::kind(self) -> radroots_signing::capability::SignerKind
+pub const fn radroots_signing::capability::SignerCapability::may_require_authentication(self) -> bool
+pub const fn radroots_signing::capability::SignerCapability::new(radroots_signing::capability::SignerKind, radroots_signing::recovery::ReplayCapability, radroots_signing::capability::CancellationSupport, bool, bool) -> Self
+pub const fn radroots_signing::capability::SignerCapability::replay(self) -> radroots_signing::recovery::ReplayCapability
+pub const fn radroots_signing::capability::SignerCapability::reports_progress(self) -> bool
+pub mod radroots_signing::error
+#[non_exhaustive] pub enum radroots_signing::error::Kind
+pub radroots_signing::error::Kind::AuthorizationDenied
+pub radroots_signing::error::Kind::DeadlineExceeded
+pub radroots_signing::error::Kind::InternalError
+pub radroots_signing::error::Kind::InvalidArgument
+pub radroots_signing::error::Kind::SignerCancelled
+pub radroots_signing::error::Kind::SignerCapabilityMissing
+pub radroots_signing::error::Kind::SignerOutputInvalid
+pub radroots_signing::error::Kind::SignerRejected
+pub radroots_signing::error::Kind::SignerTimeout
+pub radroots_signing::error::Kind::SignerUnavailable
+impl radroots_signing::error::Kind
+pub const radroots_signing::error::Kind::ALL: &'static [Self]
+pub const fn radroots_signing::error::Kind::descriptor(self) -> radroots_signing::error::Descriptor
+pub struct radroots_signing::error::Descriptor
+impl radroots_signing::error::Descriptor
+pub const fn radroots_signing::error::Descriptor::class(self) -> radroots_protocol::error::v1::Class
+pub const fn radroots_signing::error::Descriptor::code(self) -> &'static str
+pub const fn radroots_signing::error::Descriptor::kind(self) -> radroots_signing::error::Kind
+pub const fn radroots_signing::error::Descriptor::known_code(self) -> radroots_protocol::error::v1::KnownCode
+pub const fn radroots_signing::error::Descriptor::message(self) -> &'static str
+pub const fn radroots_signing::error::Descriptor::recovery_actions(self) -> &'static [radroots_protocol::error::v1::RecoveryAction]
+pub const fn radroots_signing::error::Descriptor::retryable(self) -> bool
+pub struct radroots_signing::error::Error
+impl radroots_signing::error::Error
+pub const fn radroots_signing::error::Error::class(&self) -> radroots_protocol::error::v1::Class
+pub const fn radroots_signing::error::Error::code(&self) -> &'static str
+pub const fn radroots_signing::error::Error::descriptor(&self) -> radroots_signing::error::Descriptor
+pub const fn radroots_signing::error::Error::kind(&self) -> radroots_signing::error::Kind
+pub const fn radroots_signing::error::Error::new(radroots_signing::error::Kind) -> Self
+pub const fn radroots_signing::error::Error::recovery_actions(&self) -> &'static [radroots_protocol::error::v1::RecoveryAction]
+pub const fn radroots_signing::error::Error::remote_effect(&self) -> radroots_signing::recovery::RemoteEffect
+pub const fn radroots_signing::error::Error::retryable(&self) -> bool
+pub fn radroots_signing::error::Error::to_report(&self, core::option::Option<radroots_protocol::runtime::v1::OperationId>) -> radroots_protocol::error::v1::ErrorReport
+pub const fn radroots_signing::error::Error::with_possible_remote_effect(self) -> Self
+pub fn radroots_signing::error::Error::with_source<E>(radroots_signing::error::Kind, E) -> Self where E: core::error::Error + core::marker::Send + core::marker::Sync + 'static
+impl core::convert::From<&radroots_signing::error::Error> for radroots_protocol::error::v1::ErrorReport
+pub fn radroots_protocol::error::v1::ErrorReport::from(&radroots_signing::error::Error) -> Self
+impl core::error::Error for radroots_signing::error::Error
+pub fn radroots_signing::error::Error::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Debug for radroots_signing::error::Error
+pub fn radroots_signing::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_signing::error::Error
+pub fn radroots_signing::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub const radroots_signing::error::CATALOG: &[radroots_signing::error::Descriptor]
+pub mod radroots_signing::identity
+pub struct radroots_signing::identity::AuthoredArtifactId(_)
+impl radroots_signing::identity::AuthoredArtifactId
+pub const fn radroots_signing::identity::AuthoredArtifactId::as_bytes(&self) -> &[u8; 16]
+pub fn radroots_signing::identity::AuthoredArtifactId::new([u8; 16]) -> core::result::Result<Self, radroots_signing::error::Error>
+pub fn radroots_signing::identity::AuthoredArtifactId::to_hex(self) -> alloc::string::String
+impl core::fmt::Debug for radroots_signing::identity::AuthoredArtifactId
+pub fn radroots_signing::identity::AuthoredArtifactId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_signing::identity::SignerRequestId(_)
+impl radroots_signing::identity::SignerRequestId
+pub const fn radroots_signing::identity::SignerRequestId::as_bytes(&self) -> &[u8; 32]
+pub fn radroots_signing::identity::SignerRequestId::derive(radroots_signing::identity::AuthoredArtifactId, radroots_event_codec::authoring::PlanDigest) -> Self
+pub fn radroots_signing::identity::SignerRequestId::to_hex(self) -> alloc::string::String
+impl core::fmt::Debug for radroots_signing::identity::SignerRequestId
+pub fn radroots_signing::identity::SignerRequestId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_signing::identity::SigningIntentId
+impl radroots_signing::identity::SigningIntentId
+pub const fn radroots_signing::identity::SigningIntentId::artifact_id(self) -> radroots_signing::identity::AuthoredArtifactId
+pub const fn radroots_signing::identity::SigningIntentId::new(radroots_signing::identity::SigningOperationId, radroots_signing::identity::AuthoredArtifactId) -> Self
+pub const fn radroots_signing::identity::SigningIntentId::operation_id(self) -> radroots_signing::identity::SigningOperationId
+pub struct radroots_signing::identity::SigningOperationId(_)
+impl radroots_signing::identity::SigningOperationId
+pub const fn radroots_signing::identity::SigningOperationId::as_bytes(&self) -> &[u8; 16]
+pub fn radroots_signing::identity::SigningOperationId::new([u8; 16]) -> core::result::Result<Self, radroots_signing::error::Error>
+pub fn radroots_signing::identity::SigningOperationId::to_hex(self) -> alloc::string::String
+impl core::fmt::Debug for radroots_signing::identity::SigningOperationId
+pub fn radroots_signing::identity::SigningOperationId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub mod radroots_signing::receipt
+#[non_exhaustive] pub struct radroots_signing::receipt::SignReceipt
+impl radroots_signing::receipt::SignReceipt
+pub const fn radroots_signing::receipt::SignReceipt::completed_at_unix_ms(&self) -> u64
+pub fn radroots_signing::receipt::SignReceipt::from_signed_event(&radroots_signing::request::SignRequest, radroots_event::draft::SignedEvent, u64) -> core::result::Result<Self, radroots_signing::error::Error>
+pub const fn radroots_signing::receipt::SignReceipt::intent_id(&self) -> radroots_signing::identity::SigningIntentId
+pub const fn radroots_signing::receipt::SignReceipt::operation_kind(&self) -> radroots_protocol::runtime::v1::OperationId
+pub const fn radroots_signing::receipt::SignReceipt::signed_event(&self) -> &radroots_event::draft::SignedEvent
+pub const fn radroots_signing::receipt::SignReceipt::signer_request_id(&self) -> radroots_signing::identity::SignerRequestId
+impl core::fmt::Debug for radroots_signing::receipt::SignReceipt
+pub fn radroots_signing::receipt::SignReceipt::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub mod radroots_signing::recovery
+#[non_exhaustive] pub enum radroots_signing::recovery::RecoveryDisposition
+pub radroots_signing::recovery::RecoveryDisposition::Failed
+pub radroots_signing::recovery::RecoveryDisposition::Indeterminate
+pub radroots_signing::recovery::RecoveryDisposition::RetryExactRequest
+pub radroots_signing::recovery::RecoveryDisposition::RetryLocal
+#[non_exhaustive] pub enum radroots_signing::recovery::RemoteEffect
+pub radroots_signing::recovery::RemoteEffect::MayHaveOccurred
+pub radroots_signing::recovery::RemoteEffect::None
+#[non_exhaustive] pub enum radroots_signing::recovery::ReplayCapability
+pub radroots_signing::recovery::ReplayCapability::ExactReplayByRequestId
+pub radroots_signing::recovery::ReplayCapability::LocalReplaySafe
+pub radroots_signing::recovery::ReplayCapability::NonReplayable
+pub const fn radroots_signing::recovery::recovery_disposition(radroots_signing::recovery::ReplayCapability, radroots_signing::recovery::RemoteEffect, bool) -> radroots_signing::recovery::RecoveryDisposition
+pub mod radroots_signing::request
+#[non_exhaustive] pub enum radroots_signing::request::CancellationPolicy
+pub radroots_signing::request::CancellationPolicy::LocalCooperative
+pub radroots_signing::request::CancellationPolicy::PreservePublishedRequest
+#[non_exhaustive] pub enum radroots_signing::request::SigningPurpose
+pub radroots_signing::request::SigningPurpose::AuthoredEvent
+pub radroots_signing::request::SigningPurpose::BlossomUploadAuthorization
+pub struct radroots_signing::request::CancellationSignal(_)
+impl radroots_signing::request::CancellationSignal
+pub fn radroots_signing::request::CancellationSignal::cancel(&self)
+pub fn radroots_signing::request::CancellationSignal::is_cancelled(&self) -> bool
+pub fn radroots_signing::request::CancellationSignal::new() -> Self
+#[non_exhaustive] pub struct radroots_signing::request::SignPolicy
+impl radroots_signing::request::SignPolicy
+pub const fn radroots_signing::request::SignPolicy::allowing_deprecated(self) -> Self
+pub const fn radroots_signing::request::SignPolicy::cancellation(self) -> radroots_signing::request::CancellationPolicy
+pub const fn radroots_signing::request::SignPolicy::deadline_unix_ms(self) -> u64
+pub const fn radroots_signing::request::SignPolicy::deprecated_plan(self) -> radroots_signing::authorization::DeprecatedPlanPolicy
+pub const fn radroots_signing::request::SignPolicy::managed_signing(self) -> radroots_signing::authorization::ManagedSigningPolicy
+pub const fn radroots_signing::request::SignPolicy::new(u64, radroots_signing::request::CancellationPolicy) -> core::result::Result<Self, radroots_signing::error::Error>
+pub const fn radroots_signing::request::SignPolicy::with_managed_signing_policy(self, radroots_signing::authorization::ManagedSigningPolicy) -> Self
+impl<'de> serde_core::de::Deserialize<'de> for radroots_signing::request::SignPolicy
+pub fn radroots_signing::request::SignPolicy::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_signing::request::SignRequest
+impl radroots_signing::request::SignRequest
+pub const fn radroots_signing::request::SignRequest::actor(&self) -> &radroots_signing::actor::Actor
+pub const fn radroots_signing::request::SignRequest::authored_plan(&self) -> core::option::Option<&radroots_event_codec::authoring::AuthoredEventPlan>
+pub const fn radroots_signing::request::SignRequest::authorization(&self) -> core::option::Option<radroots_signing::authorization::CurrentAuthoringDecision>
+pub const fn radroots_signing::request::SignRequest::blossom_authorization_plan(&self) -> core::option::Option<&radroots_event_codec::authoring::BlossomAuthorizationPlan>
+pub fn radroots_signing::request::SignRequest::blossom_upload(radroots_protocol::runtime::v1::OperationId, radroots_signing::identity::SigningIntentId, radroots_signing::actor::Actor, radroots_event_codec::authoring::BlossomAuthorizationPlan, radroots_signing::request::SignPolicy) -> core::result::Result<Self, radroots_signing::error::Error>
+pub const fn radroots_signing::request::SignRequest::cancellation_signal(&self) -> &radroots_signing::request::CancellationSignal
+pub fn radroots_signing::request::SignRequest::content(&self) -> &str
+pub const fn radroots_signing::request::SignRequest::created_at(&self) -> u64
+pub fn radroots_signing::request::SignRequest::ensure_active(&self, u64) -> core::result::Result<(), radroots_signing::error::Error>
+pub const fn radroots_signing::request::SignRequest::expected_author(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_signing::request::SignRequest::expected_event_id(&self) -> &radroots_event::id::EventId
+pub const fn radroots_signing::request::SignRequest::intent_id(&self) -> radroots_signing::identity::SigningIntentId
+pub const fn radroots_signing::request::SignRequest::kind(&self) -> u32
+pub fn radroots_signing::request::SignRequest::new(radroots_protocol::runtime::v1::OperationId, radroots_signing::identity::SigningIntentId, radroots_signing::actor::Actor, radroots_event_codec::authoring::AuthoredEventPlan, radroots_signing::request::SignPolicy) -> core::result::Result<Self, radroots_signing::error::Error>
+pub fn radroots_signing::request::SignRequest::new_with_authority(radroots_protocol::runtime::v1::OperationId, radroots_signing::identity::SigningIntentId, radroots_signing::actor::Actor, radroots_event_codec::authoring::AuthoredEventPlan, radroots_signing::request::SignPolicy, &dyn radroots_signing::authorization::CurrentAuthoringAuthority) -> core::result::Result<Self, radroots_signing::error::Error>
+pub const fn radroots_signing::request::SignRequest::operation_kind(&self) -> radroots_protocol::runtime::v1::OperationId
+pub const fn radroots_signing::request::SignRequest::plan_digest(&self) -> radroots_event_codec::authoring::PlanDigest
+pub const fn radroots_signing::request::SignRequest::policy(&self) -> radroots_signing::request::SignPolicy
+pub const fn radroots_signing::request::SignRequest::purpose(&self) -> radroots_signing::request::SigningPurpose
+pub fn radroots_signing::request::SignRequest::report_progress(&self, &radroots_signing::status::SignProgress)
+pub const fn radroots_signing::request::SignRequest::signer_request_id(&self) -> radroots_signing::identity::SignerRequestId
+pub fn radroots_signing::request::SignRequest::tags(&self) -> &[alloc::vec::Vec<alloc::string::String>]
+pub fn radroots_signing::request::SignRequest::with_cancellation_signal(self, radroots_signing::request::CancellationSignal) -> Self
+pub fn radroots_signing::request::SignRequest::with_progress_observer(self, alloc::sync::Arc<dyn radroots_signing::request::ProgressObserver>) -> Self
+impl core::fmt::Debug for radroots_signing::request::SignRequest
+pub fn radroots_signing::request::SignRequest::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub trait radroots_signing::request::ProgressObserver: core::marker::Send + core::marker::Sync
+pub fn radroots_signing::request::ProgressObserver::on_progress(&self, &radroots_signing::status::SignProgress)
+pub mod radroots_signing::signer
+pub trait radroots_signing::signer::Signer: core::marker::Send + core::marker::Sync
+pub fn radroots_signing::signer::Signer::sign(&self, radroots_signing::request::SignRequest) -> radroots_signing::signer::BoxFuture<'_, core::result::Result<radroots_signing::receipt::SignReceipt, radroots_signing::error::Error>>
+pub fn radroots_signing::signer::Signer::status(&self) -> radroots_signing::signer::BoxFuture<'_, core::result::Result<radroots_signing::status::SignerStatus, radroots_signing::error::Error>>
+pub type radroots_signing::signer::BoxFuture<'a, T> = core::pin::Pin<alloc::boxed::Box<(dyn core::future::future::Future<Output = T> + core::marker::Send + 'a)>>
+pub type radroots_signing::signer::DynSigner = alloc::sync::Arc<dyn radroots_signing::signer::Signer>
+pub mod radroots_signing::status
+#[non_exhaustive] pub enum radroots_signing::status::SignProgressStage
+pub radroots_signing::status::SignProgressStage::AwaitingAuthentication
+pub radroots_signing::status::SignProgressStage::AwaitingSignature
+pub radroots_signing::status::SignProgressStage::Complete
+pub radroots_signing::status::SignProgressStage::Queued
+pub radroots_signing::status::SignProgressStage::RequestPublished
+pub radroots_signing::status::SignProgressStage::Validating
+pub radroots_signing::status::SignProgressStage::VerifyingOutput
+#[non_exhaustive] pub enum radroots_signing::status::SignerAvailability
+pub radroots_signing::status::SignerAvailability::AwaitingAuthentication
+pub radroots_signing::status::SignerAvailability::Busy
+pub radroots_signing::status::SignerAvailability::Ready
+pub radroots_signing::status::SignerAvailability::Unavailable
+#[non_exhaustive] pub struct radroots_signing::status::AuthChallenge
+impl radroots_signing::status::AuthChallenge
+pub const fn radroots_signing::status::AuthChallenge::expires_at_unix(&self) -> core::option::Option<u64>
+pub fn radroots_signing::status::AuthChallenge::new(impl core::convert::Into<alloc::string::String>, u64, core::option::Option<u64>) -> core::result::Result<Self, radroots_signing::error::Error>
+pub const fn radroots_signing::status::AuthChallenge::required_at_unix(&self) -> u64
+pub fn radroots_signing::status::AuthChallenge::uri(&self) -> &str
+impl core::fmt::Debug for radroots_signing::status::AuthChallenge
+pub fn radroots_signing::status::AuthChallenge::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl<'de> serde_core::de::Deserialize<'de> for radroots_signing::status::AuthChallenge
+pub fn radroots_signing::status::AuthChallenge::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+#[non_exhaustive] pub struct radroots_signing::status::SignProgress
+impl radroots_signing::status::SignProgress
+pub const fn radroots_signing::status::SignProgress::authentication(radroots_signing::status::AuthChallenge) -> Self
+pub const fn radroots_signing::status::SignProgress::challenge(&self) -> core::option::Option<&radroots_signing::status::AuthChallenge>
+pub const fn radroots_signing::status::SignProgress::stage(radroots_signing::status::SignProgressStage) -> core::result::Result<Self, radroots_signing::error::Error>
+pub const fn radroots_signing::status::SignProgress::stage_value(&self) -> radroots_signing::status::SignProgressStage
+impl<'de> serde_core::de::Deserialize<'de> for radroots_signing::status::SignProgress
+pub fn radroots_signing::status::SignProgress::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+#[non_exhaustive] pub struct radroots_signing::status::SignerStatus
+impl radroots_signing::status::SignerStatus
+pub const fn radroots_signing::status::SignerStatus::availability(&self) -> radroots_signing::status::SignerAvailability
+pub fn radroots_signing::status::SignerStatus::capabilities(&self) -> &[radroots_signing::capability::SignerCapability]
+pub fn radroots_signing::status::SignerStatus::new(radroots_signing::status::SignerAvailability, alloc::vec::Vec<radroots_signing::capability::SignerCapability>, core::option::Option<radroots_signing::status::SignProgress>) -> Self
+pub const fn radroots_signing::status::SignerStatus::progress(&self) -> core::option::Option<&radroots_signing::status::SignProgress>
+pub const fn radroots_signing::status::SignerStatus::unavailable() -> Self
+#[non_exhaustive] pub enum radroots_signing::CurrentAuthoringDecision
+pub radroots_signing::CurrentAuthoringDecision::Allowed
+pub radroots_signing::CurrentAuthoringDecision::AllowedDeprecated
+pub radroots_signing::CurrentAuthoringDecision::AllowedDeprecated::warning_code: &'static str
+pub radroots_signing::CurrentAuthoringDecision::Blocked
+pub radroots_signing::CurrentAuthoringDecision::Blocked::code: &'static str
+pub radroots_signing::CurrentAuthoringDecision::Revoked
+pub radroots_signing::CurrentAuthoringDecision::Revoked::code: &'static str
+#[non_exhaustive] pub enum radroots_signing::SigningPurpose
+pub radroots_signing::SigningPurpose::AuthoredEvent
+pub radroots_signing::SigningPurpose::BlossomUploadAuthorization
+pub struct radroots_signing::Actor
+impl radroots_signing::actor::Actor
+pub const fn radroots_signing::actor::Actor::account_id(&self) -> core::option::Option<radroots_identity::account::AccountId>
+pub fn radroots_signing::actor::Actor::from_public_key_hex<I>(&str, radroots_signing::actor::ActorSource, I) -> core::result::Result<Self, radroots_signing::error::Error> where I: core::iter::traits::collect::IntoIterator<Item = radroots_event::contract::registry_v7::AuthorRole>
+pub fn radroots_signing::actor::Actor::new<I>(radroots_identity::key::PublicKey, radroots_signing::actor::ActorSource, I) -> core::result::Result<Self, radroots_signing::error::Error> where I: core::iter::traits::collect::IntoIterator<Item = radroots_event::contract::registry_v7::AuthorRole>
+pub const fn radroots_signing::actor::Actor::public_key(&self) -> radroots_identity::key::PublicKey
+pub const fn radroots_signing::actor::Actor::roles(&self) -> &alloc::collections::btree::set::BTreeSet<radroots_event::contract::registry_v7::AuthorRole>
+pub fn radroots_signing::actor::Actor::satisfies(&self, radroots_event::contract::registry_v7::AuthorRole) -> bool
+pub const fn radroots_signing::actor::Actor::source(&self) -> radroots_signing::actor::ActorSource
+pub struct radroots_signing::AuthoredArtifactId(_)
+impl radroots_signing::identity::AuthoredArtifactId
+pub const fn radroots_signing::identity::AuthoredArtifactId::as_bytes(&self) -> &[u8; 16]
+pub fn radroots_signing::identity::AuthoredArtifactId::new([u8; 16]) -> core::result::Result<Self, radroots_signing::error::Error>
+pub fn radroots_signing::identity::AuthoredArtifactId::to_hex(self) -> alloc::string::String
+impl core::fmt::Debug for radroots_signing::identity::AuthoredArtifactId
+pub fn radroots_signing::identity::AuthoredArtifactId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_signing::Error
+impl radroots_signing::error::Error
+pub const fn radroots_signing::error::Error::class(&self) -> radroots_protocol::error::v1::Class
+pub const fn radroots_signing::error::Error::code(&self) -> &'static str
+pub const fn radroots_signing::error::Error::descriptor(&self) -> radroots_signing::error::Descriptor
+pub const fn radroots_signing::error::Error::kind(&self) -> radroots_signing::error::Kind
+pub const fn radroots_signing::error::Error::new(radroots_signing::error::Kind) -> Self
+pub const fn radroots_signing::error::Error::recovery_actions(&self) -> &'static [radroots_protocol::error::v1::RecoveryAction]
+pub const fn radroots_signing::error::Error::remote_effect(&self) -> radroots_signing::recovery::RemoteEffect
+pub const fn radroots_signing::error::Error::retryable(&self) -> bool
+pub fn radroots_signing::error::Error::to_report(&self, core::option::Option<radroots_protocol::runtime::v1::OperationId>) -> radroots_protocol::error::v1::ErrorReport
+pub const fn radroots_signing::error::Error::with_possible_remote_effect(self) -> Self
+pub fn radroots_signing::error::Error::with_source<E>(radroots_signing::error::Kind, E) -> Self where E: core::error::Error + core::marker::Send + core::marker::Sync + 'static
+impl core::convert::From<&radroots_signing::error::Error> for radroots_protocol::error::v1::ErrorReport
+pub fn radroots_protocol::error::v1::ErrorReport::from(&radroots_signing::error::Error) -> Self
+impl core::error::Error for radroots_signing::error::Error
+pub fn radroots_signing::error::Error::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Debug for radroots_signing::error::Error
+pub fn radroots_signing::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::fmt::Display for radroots_signing::error::Error
+pub fn radroots_signing::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub struct radroots_signing::SignReceipt
+impl radroots_signing::receipt::SignReceipt
+pub const fn radroots_signing::receipt::SignReceipt::completed_at_unix_ms(&self) -> u64
+pub fn radroots_signing::receipt::SignReceipt::from_signed_event(&radroots_signing::request::SignRequest, radroots_event::draft::SignedEvent, u64) -> core::result::Result<Self, radroots_signing::error::Error>
+pub const fn radroots_signing::receipt::SignReceipt::intent_id(&self) -> radroots_signing::identity::SigningIntentId
+pub const fn radroots_signing::receipt::SignReceipt::operation_kind(&self) -> radroots_protocol::runtime::v1::OperationId
+pub const fn radroots_signing::receipt::SignReceipt::signed_event(&self) -> &radroots_event::draft::SignedEvent
+pub const fn radroots_signing::receipt::SignReceipt::signer_request_id(&self) -> radroots_signing::identity::SignerRequestId
+impl core::fmt::Debug for radroots_signing::receipt::SignReceipt
+pub fn radroots_signing::receipt::SignReceipt::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_signing::SignRequest
+impl radroots_signing::request::SignRequest
+pub const fn radroots_signing::request::SignRequest::actor(&self) -> &radroots_signing::actor::Actor
+pub const fn radroots_signing::request::SignRequest::authored_plan(&self) -> core::option::Option<&radroots_event_codec::authoring::AuthoredEventPlan>
+pub const fn radroots_signing::request::SignRequest::authorization(&self) -> core::option::Option<radroots_signing::authorization::CurrentAuthoringDecision>
+pub const fn radroots_signing::request::SignRequest::blossom_authorization_plan(&self) -> core::option::Option<&radroots_event_codec::authoring::BlossomAuthorizationPlan>
+pub fn radroots_signing::request::SignRequest::blossom_upload(radroots_protocol::runtime::v1::OperationId, radroots_signing::identity::SigningIntentId, radroots_signing::actor::Actor, radroots_event_codec::authoring::BlossomAuthorizationPlan, radroots_signing::request::SignPolicy) -> core::result::Result<Self, radroots_signing::error::Error>
+pub const fn radroots_signing::request::SignRequest::cancellation_signal(&self) -> &radroots_signing::request::CancellationSignal
+pub fn radroots_signing::request::SignRequest::content(&self) -> &str
+pub const fn radroots_signing::request::SignRequest::created_at(&self) -> u64
+pub fn radroots_signing::request::SignRequest::ensure_active(&self, u64) -> core::result::Result<(), radroots_signing::error::Error>
+pub const fn radroots_signing::request::SignRequest::expected_author(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_signing::request::SignRequest::expected_event_id(&self) -> &radroots_event::id::EventId
+pub const fn radroots_signing::request::SignRequest::intent_id(&self) -> radroots_signing::identity::SigningIntentId
+pub const fn radroots_signing::request::SignRequest::kind(&self) -> u32
+pub fn radroots_signing::request::SignRequest::new(radroots_protocol::runtime::v1::OperationId, radroots_signing::identity::SigningIntentId, radroots_signing::actor::Actor, radroots_event_codec::authoring::AuthoredEventPlan, radroots_signing::request::SignPolicy) -> core::result::Result<Self, radroots_signing::error::Error>
+pub fn radroots_signing::request::SignRequest::new_with_authority(radroots_protocol::runtime::v1::OperationId, radroots_signing::identity::SigningIntentId, radroots_signing::actor::Actor, radroots_event_codec::authoring::AuthoredEventPlan, radroots_signing::request::SignPolicy, &dyn radroots_signing::authorization::CurrentAuthoringAuthority) -> core::result::Result<Self, radroots_signing::error::Error>
+pub const fn radroots_signing::request::SignRequest::operation_kind(&self) -> radroots_protocol::runtime::v1::OperationId
+pub const fn radroots_signing::request::SignRequest::plan_digest(&self) -> radroots_event_codec::authoring::PlanDigest
+pub const fn radroots_signing::request::SignRequest::policy(&self) -> radroots_signing::request::SignPolicy
+pub const fn radroots_signing::request::SignRequest::purpose(&self) -> radroots_signing::request::SigningPurpose
+pub fn radroots_signing::request::SignRequest::report_progress(&self, &radroots_signing::status::SignProgress)
+pub const fn radroots_signing::request::SignRequest::signer_request_id(&self) -> radroots_signing::identity::SignerRequestId
+pub fn radroots_signing::request::SignRequest::tags(&self) -> &[alloc::vec::Vec<alloc::string::String>]
+pub fn radroots_signing::request::SignRequest::with_cancellation_signal(self, radroots_signing::request::CancellationSignal) -> Self
+pub fn radroots_signing::request::SignRequest::with_progress_observer(self, alloc::sync::Arc<dyn radroots_signing::request::ProgressObserver>) -> Self
+impl core::fmt::Debug for radroots_signing::request::SignRequest
+pub fn radroots_signing::request::SignRequest::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_signing::SignerRequestId(_)
+impl radroots_signing::identity::SignerRequestId
+pub const fn radroots_signing::identity::SignerRequestId::as_bytes(&self) -> &[u8; 32]
+pub fn radroots_signing::identity::SignerRequestId::derive(radroots_signing::identity::AuthoredArtifactId, radroots_event_codec::authoring::PlanDigest) -> Self
+pub fn radroots_signing::identity::SignerRequestId::to_hex(self) -> alloc::string::String
+impl core::fmt::Debug for radroots_signing::identity::SignerRequestId
+pub fn radroots_signing::identity::SignerRequestId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub struct radroots_signing::SignerStatus
+impl radroots_signing::status::SignerStatus
+pub const fn radroots_signing::status::SignerStatus::availability(&self) -> radroots_signing::status::SignerAvailability
+pub fn radroots_signing::status::SignerStatus::capabilities(&self) -> &[radroots_signing::capability::SignerCapability]
+pub fn radroots_signing::status::SignerStatus::new(radroots_signing::status::SignerAvailability, alloc::vec::Vec<radroots_signing::capability::SignerCapability>, core::option::Option<radroots_signing::status::SignProgress>) -> Self
+pub const fn radroots_signing::status::SignerStatus::progress(&self) -> core::option::Option<&radroots_signing::status::SignProgress>
+pub const fn radroots_signing::status::SignerStatus::unavailable() -> Self
+pub struct radroots_signing::SigningIntentId
+impl radroots_signing::identity::SigningIntentId
+pub const fn radroots_signing::identity::SigningIntentId::artifact_id(self) -> radroots_signing::identity::AuthoredArtifactId
+pub const fn radroots_signing::identity::SigningIntentId::new(radroots_signing::identity::SigningOperationId, radroots_signing::identity::AuthoredArtifactId) -> Self
+pub const fn radroots_signing::identity::SigningIntentId::operation_id(self) -> radroots_signing::identity::SigningOperationId
+pub struct radroots_signing::SigningOperationId(_)
+impl radroots_signing::identity::SigningOperationId
+pub const fn radroots_signing::identity::SigningOperationId::as_bytes(&self) -> &[u8; 16]
+pub fn radroots_signing::identity::SigningOperationId::new([u8; 16]) -> core::result::Result<Self, radroots_signing::error::Error>
+pub fn radroots_signing::identity::SigningOperationId::to_hex(self) -> alloc::string::String
+impl core::fmt::Debug for radroots_signing::identity::SigningOperationId
+pub fn radroots_signing::identity::SigningOperationId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub trait radroots_signing::CurrentAuthoringAuthority: core::marker::Send + core::marker::Sync
+pub fn radroots_signing::CurrentAuthoringAuthority::evaluate(&self, &radroots_event_codec::authoring::AuthoredEventPlan) -> radroots_signing::authorization::CurrentAuthoringDecision
+impl radroots_signing::authorization::CurrentAuthoringAuthority for radroots_signing::authorization::CurrentRegistryAuthority
+pub fn radroots_signing::authorization::CurrentRegistryAuthority::evaluate(&self, &radroots_event_codec::authoring::AuthoredEventPlan) -> radroots_signing::authorization::CurrentAuthoringDecision
+pub trait radroots_signing::Signer: core::marker::Send + core::marker::Sync
+pub fn radroots_signing::Signer::sign(&self, radroots_signing::request::SignRequest) -> radroots_signing::signer::BoxFuture<'_, core::result::Result<radroots_signing::receipt::SignReceipt, radroots_signing::error::Error>>
+pub fn radroots_signing::Signer::status(&self) -> radroots_signing::signer::BoxFuture<'_, core::result::Result<radroots_signing::status::SignerStatus, radroots_signing::error::Error>>
diff --git a/contracts/api_baselines/radroots_storage.txt b/contracts/api_baselines/radroots_storage.txt
@@ -0,0 +1,1552 @@
+pub mod radroots_storage
+pub mod radroots_storage::atomic
+pub enum radroots_storage::atomic::AtomicCommitDisposition
+pub radroots_storage::atomic::AtomicCommitDisposition::Committed
+pub radroots_storage::atomic::AtomicCommitDisposition::Replay
+pub enum radroots_storage::atomic::AtomicCommitOutcome
+pub radroots_storage::atomic::AtomicCommitOutcome::Ingested
+pub radroots_storage::atomic::AtomicCommitOutcome::Ingested::admission: radroots_storage::event::AdmissionReceipt
+pub radroots_storage::atomic::AtomicCommitOutcome::Ingested::projection: core::option::Option<alloc::boxed::Box<radroots_storage::projection::ProjectionStatus>>
+impl radroots_storage::atomic::AtomicCommitOutcome
+pub const fn radroots_storage::atomic::AtomicCommitOutcome::kind(&self) -> radroots_storage::atomic::AtomicWorkflowKind
+pub enum radroots_storage::atomic::AtomicWorkflow
+pub radroots_storage::atomic::AtomicWorkflow::Ingested(alloc::boxed::Box<radroots_storage::atomic::CommitIngested>)
+impl radroots_storage::atomic::AtomicWorkflow
+pub const fn radroots_storage::atomic::AtomicWorkflow::kind(&self) -> radroots_storage::atomic::AtomicWorkflowKind
+pub enum radroots_storage::atomic::AtomicWorkflowKind
+pub radroots_storage::atomic::AtomicWorkflowKind::Ingested
+pub struct radroots_storage::atomic::AtomicCommit
+impl radroots_storage::atomic::AtomicCommit
+pub const fn radroots_storage::atomic::AtomicCommit::commit_id(&self) -> radroots_storage::atomic::AtomicCommitId
+pub const fn radroots_storage::atomic::AtomicCommit::digest(&self) -> radroots_storage::atomic::AtomicCommitDigest
+pub fn radroots_storage::atomic::AtomicCommit::new(radroots_storage::atomic::AtomicCommitId, radroots_storage::atomic::AtomicCommitDigest, u64, radroots_storage::atomic::AtomicWorkflow) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::atomic::AtomicCommit::requested_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::atomic::AtomicCommit::workflow(&self) -> &radroots_storage::atomic::AtomicWorkflow
+pub struct radroots_storage::atomic::AtomicCommitDigest(_)
+impl radroots_storage::atomic::AtomicCommitDigest
+pub const fn radroots_storage::atomic::AtomicCommitDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::atomic::AtomicCommitDigest::new([u8; 32]) -> Self
+pub struct radroots_storage::atomic::AtomicCommitId(_)
+impl radroots_storage::atomic::AtomicCommitId
+pub const fn radroots_storage::atomic::AtomicCommitId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::atomic::AtomicCommitId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::atomic::AtomicCommitReceipt
+impl radroots_storage::atomic::AtomicCommitReceipt
+pub const fn radroots_storage::atomic::AtomicCommitReceipt::commit_id(&self) -> radroots_storage::atomic::AtomicCommitId
+pub const fn radroots_storage::atomic::AtomicCommitReceipt::committed_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::atomic::AtomicCommitReceipt::digest(&self) -> radroots_storage::atomic::AtomicCommitDigest
+pub const fn radroots_storage::atomic::AtomicCommitReceipt::disposition(&self) -> radroots_storage::atomic::AtomicCommitDisposition
+pub fn radroots_storage::atomic::AtomicCommitReceipt::from_durable_parts(radroots_storage::atomic::AtomicCommitId, radroots_storage::atomic::AtomicCommitDigest, radroots_storage::atomic::AtomicCommitDisposition, u64, u64, radroots_storage::atomic::AtomicWorkflowKind, radroots_storage::atomic::AtomicCommitOutcome) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::atomic::AtomicCommitReceipt::new(&radroots_storage::atomic::AtomicCommit, radroots_storage::atomic::AtomicCommitDisposition, u64, radroots_storage::atomic::AtomicCommitOutcome) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::atomic::AtomicCommitReceipt::outcome(&self) -> &radroots_storage::atomic::AtomicCommitOutcome
+pub struct radroots_storage::atomic::CommitIngested
+impl radroots_storage::atomic::CommitIngested
+pub const fn radroots_storage::atomic::CommitIngested::admission(&self) -> &radroots_storage::event::EventAdmission
+pub const fn radroots_storage::atomic::CommitIngested::new(radroots_storage::event::EventAdmission, core::option::Option<radroots_storage::projection::ProjectionCheckpoint>) -> Self
+pub const fn radroots_storage::atomic::CommitIngested::projection(&self) -> core::option::Option<&radroots_storage::projection::ProjectionCheckpoint>
+pub trait radroots_storage::atomic::AtomicStorage: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::atomic::AtomicStorage::commit(&self, radroots_storage::atomic::AtomicCommit) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::atomic::AtomicCommitReceipt, radroots_storage::Error>>
+pub fn radroots_storage::atomic::AtomicStorage::receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::atomic::AtomicCommitReceipt>, radroots_storage::Error>>
+impl radroots_storage::atomic::AtomicStorage for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::commit(&self, radroots_storage::atomic::AtomicCommit) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::atomic::AtomicCommitReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::atomic::AtomicCommitReceipt>, radroots_storage::Error>>
+pub mod radroots_storage::authored
+pub enum radroots_storage::authored::AdmissionState
+pub radroots_storage::authored::AdmissionState::Cancelled
+pub radroots_storage::authored::AdmissionState::Duplicate
+pub radroots_storage::authored::AdmissionState::Inserted
+pub radroots_storage::authored::AdmissionState::Pending
+pub radroots_storage::authored::AdmissionState::Rejected
+pub radroots_storage::authored::AdmissionState::Retryable
+impl radroots_storage::authored::AdmissionState
+pub const fn radroots_storage::authored::AdmissionState::is_admitted(self) -> bool
+pub enum radroots_storage::authored::ArtifactOrigin
+pub radroots_storage::authored::ArtifactOrigin::ImportedSigned
+pub radroots_storage::authored::ArtifactOrigin::Planned
+impl radroots_storage::authored::ArtifactOrigin
+pub const fn radroots_storage::authored::ArtifactOrigin::is_resignable(self) -> bool
+pub enum radroots_storage::authored::FailureClass
+pub radroots_storage::authored::FailureClass::Indeterminate
+pub radroots_storage::authored::FailureClass::Retryable
+pub radroots_storage::authored::FailureClass::Terminal
+pub enum radroots_storage::authored::SigningState
+pub radroots_storage::authored::SigningState::Cancelled
+pub radroots_storage::authored::SigningState::FailedTerminal
+pub radroots_storage::authored::SigningState::Indeterminate
+pub radroots_storage::authored::SigningState::Planned
+pub radroots_storage::authored::SigningState::Retryable
+pub radroots_storage::authored::SigningState::Signed
+pub enum radroots_storage::authored::WorkPhase
+pub radroots_storage::authored::WorkPhase::Admission
+pub radroots_storage::authored::WorkPhase::Delivery
+pub radroots_storage::authored::WorkPhase::Signing
+pub struct radroots_storage::authored::AuthoredArtifact
+impl radroots_storage::authored::AuthoredArtifact
+pub const fn radroots_storage::authored::AuthoredArtifact::admission_claim(&self) -> core::option::Option<&radroots_storage::authored::WorkClaim>
+pub const fn radroots_storage::authored::AuthoredArtifact::admission_retry(&self) -> core::option::Option<&radroots_storage::authored::RetrySchedule>
+pub const fn radroots_storage::authored::AuthoredArtifact::admission_state(&self) -> radroots_storage::authored::AdmissionState
+pub const fn radroots_storage::authored::AuthoredArtifact::artifact_id(&self) -> radroots_storage::authored::AuthoredArtifactId
+pub fn radroots_storage::authored::AuthoredArtifact::cancel_signing(&mut self, u64) -> core::result::Result<(), radroots_storage::Error>
+pub const fn radroots_storage::authored::AuthoredArtifact::created_at_unix_ms(&self) -> u64
+pub fn radroots_storage::authored::AuthoredArtifact::imported_signed(radroots_storage::authored::AuthoredArtifactId, radroots_storage::journal::OperationInstanceId, u16, radroots_event::draft::SignedEvent, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored::AuthoredArtifact::last_failure(&self) -> core::option::Option<&radroots_storage::authored::WorkFailure>
+pub const fn radroots_storage::authored::AuthoredArtifact::operation_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub const fn radroots_storage::authored::AuthoredArtifact::ordinal(&self) -> u16
+pub const fn radroots_storage::authored::AuthoredArtifact::origin(&self) -> radroots_storage::authored::ArtifactOrigin
+pub const fn radroots_storage::authored::AuthoredArtifact::plan(&self) -> core::option::Option<&radroots_storage::authored::DurableAuthoredPlan>
+pub fn radroots_storage::authored::AuthoredArtifact::planned(radroots_storage::authored::AuthoredArtifactId, radroots_storage::journal::OperationInstanceId, u16, &radroots_event_codec::authoring::AuthoredEventPlan, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::authored::AuthoredArtifact::reconstruct(Self) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::authored::AuthoredArtifact::record_admission(&mut self, radroots_storage::authored::AdmissionState, core::option::Option<radroots_storage::authored::WorkFailure>, core::option::Option<radroots_storage::authored::RetrySchedule>, u64) -> core::result::Result<(), radroots_storage::Error>
+pub fn radroots_storage::authored::AuthoredArtifact::record_signed(&mut self, radroots_event::draft::SignedEvent, u64) -> core::result::Result<(), radroots_storage::Error>
+pub fn radroots_storage::authored::AuthoredArtifact::record_signing_failure(&mut self, radroots_storage::authored::WorkFailure, core::option::Option<radroots_storage::authored::RetrySchedule>, u64) -> core::result::Result<(), radroots_storage::Error>
+pub const fn radroots_storage::authored::AuthoredArtifact::revision(&self) -> core::num::nonzero::NonZeroU64
+pub fn radroots_storage::authored::AuthoredArtifact::set_admission_claim(&mut self, radroots_storage::authored::WorkClaim, u64) -> core::result::Result<(), radroots_storage::Error>
+pub fn radroots_storage::authored::AuthoredArtifact::set_signing_claim(&mut self, radroots_storage::authored::WorkClaim, u64) -> core::result::Result<(), radroots_storage::Error>
+pub const fn radroots_storage::authored::AuthoredArtifact::signed(&self) -> core::option::Option<&radroots_storage::authored::ExactSignedArtifact>
+pub const fn radroots_storage::authored::AuthoredArtifact::signing_claim(&self) -> core::option::Option<&radroots_storage::authored::WorkClaim>
+pub const fn radroots_storage::authored::AuthoredArtifact::signing_retry(&self) -> core::option::Option<&radroots_storage::authored::RetrySchedule>
+pub const fn radroots_storage::authored::AuthoredArtifact::signing_state(&self) -> radroots_storage::authored::SigningState
+pub const fn radroots_storage::authored::AuthoredArtifact::updated_at_unix_ms(&self) -> u64
+pub fn radroots_storage::authored::AuthoredArtifact::validate(&self) -> core::result::Result<(), radroots_storage::Error>
+pub struct radroots_storage::authored::AuthoredArtifactId(_)
+impl radroots_storage::authored::AuthoredArtifactId
+pub const fn radroots_storage::authored::AuthoredArtifactId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::authored::AuthoredArtifactId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+impl core::convert::From<radroots_storage::authored::AuthoredArtifactId> for [u8; 16]
+pub fn [u8; 16]::from(radroots_storage::authored::AuthoredArtifactId) -> Self
+impl core::convert::TryFrom<[u8; 16]> for radroots_storage::authored::AuthoredArtifactId
+pub type radroots_storage::authored::AuthoredArtifactId::Error = radroots_storage::Error
+pub fn radroots_storage::authored::AuthoredArtifactId::try_from([u8; 16]) -> core::result::Result<Self, Self::Error>
+pub struct radroots_storage::authored::AuthoredOperation
+impl radroots_storage::authored::AuthoredOperation
+pub fn radroots_storage::authored::AuthoredOperation::artifact_ids(&self) -> &[radroots_storage::authored::AuthoredArtifactId]
+pub const fn radroots_storage::authored::AuthoredOperation::created_at_unix_ms(&self) -> u64
+pub fn radroots_storage::authored::AuthoredOperation::new(radroots_storage::journal::OperationInstanceId, alloc::vec::Vec<radroots_storage::authored::AuthoredArtifactId>, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored::AuthoredOperation::operation_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub fn radroots_storage::authored::AuthoredOperation::reconstruct(radroots_storage::journal::OperationInstanceId, alloc::vec::Vec<radroots_storage::authored::AuthoredArtifactId>, u64, u64, core::num::nonzero::NonZeroU64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored::AuthoredOperation::revision(&self) -> core::num::nonzero::NonZeroU64
+pub const fn radroots_storage::authored::AuthoredOperation::updated_at_unix_ms(&self) -> u64
+pub struct radroots_storage::authored::DurableAuthoredPlan
+impl radroots_storage::authored::DurableAuthoredPlan
+pub fn radroots_storage::authored::DurableAuthoredPlan::decode(&self) -> core::result::Result<radroots_event_codec::authoring::wire::HistoricalPlanIntegrity, radroots_storage::Error>
+pub fn radroots_storage::authored::DurableAuthoredPlan::from_plan(&radroots_event_codec::authoring::AuthoredEventPlan) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::authored::DurableAuthoredPlan::reconstruct(alloc::vec::Vec<u8>) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::authored::DurableAuthoredPlan::wire_json(&self) -> &[u8]
+pub struct radroots_storage::authored::ExactSignedArtifact
+impl radroots_storage::authored::ExactSignedArtifact
+pub const fn radroots_storage::authored::ExactSignedArtifact::event(&self) -> &radroots_event::draft::SignedEvent
+pub fn radroots_storage::authored::ExactSignedArtifact::new(radroots_event::draft::SignedEvent) -> Self
+pub const fn radroots_storage::authored::ExactSignedArtifact::raw_json_sha256(&self) -> &[u8; 32]
+pub fn radroots_storage::authored::ExactSignedArtifact::reconstruct(radroots_event::draft::SignedEvent, [u8; 32]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::authored::OperationSettlement
+impl radroots_storage::authored::OperationSettlement
+pub const fn radroots_storage::authored::OperationSettlement::admitted(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::artifacts(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::cancelled(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::delivery_cancelled(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::delivery_exhausted(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::delivery_failed_terminal(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::delivery_pending(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::delivery_plans(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::delivery_retryable(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::delivery_satisfied(self) -> u16
+pub fn radroots_storage::authored::OperationSettlement::evaluate(&radroots_storage::authored::AuthoredOperation, &[radroots_storage::authored::AuthoredArtifact]) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::authored::OperationSettlement::evaluate_complete(&radroots_storage::authored::AuthoredOperation, &[radroots_storage::authored::AuthoredArtifact], &[radroots_storage::authored_delivery::AuthoredDeliveryPlan]) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored::OperationSettlement::failed_terminal(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::has_failures(self) -> bool
+pub const fn radroots_storage::authored::OperationSettlement::indeterminate(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::is_settled(self) -> bool
+pub const fn radroots_storage::authored::OperationSettlement::is_successful(self) -> bool
+pub const fn radroots_storage::authored::OperationSettlement::pending(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::retryable(self) -> u16
+pub const fn radroots_storage::authored::OperationSettlement::signed(self) -> u16
+pub struct radroots_storage::authored::RetrySchedule
+impl radroots_storage::authored::RetrySchedule
+pub const fn radroots_storage::authored::RetrySchedule::attempt(&self) -> core::num::nonzero::NonZeroU32
+pub const fn radroots_storage::authored::RetrySchedule::failure(&self) -> &radroots_storage::authored::WorkFailure
+pub fn radroots_storage::authored::RetrySchedule::new(core::num::nonzero::NonZeroU32, u64, radroots_storage::authored::WorkFailure) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::authored::RetrySchedule::next_attempt(&self, u64, radroots_storage::authored::WorkFailure) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored::RetrySchedule::not_before_unix_ms(&self) -> u64
+pub struct radroots_storage::authored::WorkClaim
+impl radroots_storage::authored::WorkClaim
+pub const fn radroots_storage::authored::WorkClaim::acquired_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::authored::WorkClaim::expires_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::authored::WorkClaim::generation(&self) -> core::num::nonzero::NonZeroU64
+pub fn radroots_storage::authored::WorkClaim::matches_fence(&self, &[u8; 16], core::num::nonzero::NonZeroU64, core::num::nonzero::NonZeroU64, u64) -> bool
+pub fn radroots_storage::authored::WorkClaim::new([u8; 16], impl core::convert::Into<alloc::string::String>, core::num::nonzero::NonZeroU64, u64, u64, core::num::nonzero::NonZeroU64) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::authored::WorkClaim::owner(&self) -> &str
+pub const fn radroots_storage::authored::WorkClaim::row_revision(&self) -> core::num::nonzero::NonZeroU64
+pub const fn radroots_storage::authored::WorkClaim::token(&self) -> &[u8; 16]
+pub fn radroots_storage::authored::WorkClaim::validate(&self) -> core::result::Result<(), radroots_storage::Error>
+pub struct radroots_storage::authored::WorkFailure
+impl radroots_storage::authored::WorkFailure
+pub const fn radroots_storage::authored::WorkFailure::class(&self) -> radroots_storage::authored::FailureClass
+pub fn radroots_storage::authored::WorkFailure::code(&self) -> &str
+pub fn radroots_storage::authored::WorkFailure::diagnostic(&self) -> core::option::Option<&str>
+pub fn radroots_storage::authored::WorkFailure::new(impl core::convert::Into<alloc::string::String>, radroots_storage::authored::WorkPhase, radroots_storage::authored::FailureClass, core::option::Option<u64>, core::option::Option<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored::WorkFailure::phase(&self) -> radroots_storage::authored::WorkPhase
+pub const fn radroots_storage::authored::WorkFailure::retry_after_unix_ms(&self) -> core::option::Option<u64>
+pub fn radroots_storage::authored::WorkFailure::validate(&self) -> core::result::Result<(), radroots_storage::Error>
+pub const radroots_storage::authored::AUTHORED_OPERATION_ARTIFACTS_MAX: usize
+pub const radroots_storage::authored::WORK_CLAIM_OWNER_MAX_BYTES: usize
+pub const radroots_storage::authored::WORK_FAILURE_CODE_MAX_BYTES: usize
+pub const radroots_storage::authored::WORK_FAILURE_DIAGNOSTIC_MAX_BYTES: usize
+pub mod radroots_storage::authored_atomic
+pub enum radroots_storage::authored_atomic::AuthoredAtomicCommand
+pub radroots_storage::authored_atomic::AuthoredAtomicCommand::ApplyAdmission(radroots_storage::authored_atomic::ApplyAdmissionResult)
+pub radroots_storage::authored_atomic::AuthoredAtomicCommand::ApplyDelivery(radroots_storage::authored_atomic::ApplyDeliveryAttempt)
+pub radroots_storage::authored_atomic::AuthoredAtomicCommand::ApplyFailure(radroots_storage::authored_atomic::ApplyWorkFailure)
+pub radroots_storage::authored_atomic::AuthoredAtomicCommand::ApplySigned(radroots_storage::authored_atomic::ApplySignedArtifact)
+pub radroots_storage::authored_atomic::AuthoredAtomicCommand::Cancel(radroots_storage::authored_atomic::CancelAuthoredWork)
+pub radroots_storage::authored_atomic::AuthoredAtomicCommand::Claim(radroots_storage::authored_atomic::ClaimAuthoredWork)
+pub radroots_storage::authored_atomic::AuthoredAtomicCommand::Prepare(radroots_storage::authored_atomic::PrepareAuthoredOperation)
+impl radroots_storage::authored_atomic::AuthoredAtomicCommand
+pub fn radroots_storage::authored_atomic::AuthoredAtomicCommand::commit_id(&self) -> radroots_storage::atomic::AtomicCommitId
+pub fn radroots_storage::authored_atomic::AuthoredAtomicCommand::digest(&self) -> radroots_storage::atomic::AtomicCommitDigest
+pub const fn radroots_storage::authored_atomic::AuthoredAtomicCommand::requested_at_unix_ms(&self) -> u64
+pub enum radroots_storage::authored_atomic::AuthoredAtomicOutcome
+pub radroots_storage::authored_atomic::AuthoredAtomicOutcome::Artifact(radroots_storage::authored::AuthoredArtifact)
+pub radroots_storage::authored_atomic::AuthoredAtomicOutcome::DeliveryPlan(radroots_storage::authored_delivery::AuthoredDeliveryPlan)
+pub radroots_storage::authored_atomic::AuthoredAtomicOutcome::Prepared
+pub radroots_storage::authored_atomic::AuthoredAtomicOutcome::Prepared::artifacts: alloc::vec::Vec<radroots_storage::authored::AuthoredArtifact>
+pub radroots_storage::authored_atomic::AuthoredAtomicOutcome::Prepared::delivery_plans: alloc::vec::Vec<radroots_storage::authored_delivery::AuthoredDeliveryPlan>
+pub radroots_storage::authored_atomic::AuthoredAtomicOutcome::Prepared::operation: radroots_storage::authored::AuthoredOperation
+pub enum radroots_storage::authored_atomic::AuthoredWorkTarget
+pub radroots_storage::authored_atomic::AuthoredWorkTarget::Artifact(radroots_storage::authored::AuthoredArtifactId)
+pub radroots_storage::authored_atomic::AuthoredWorkTarget::DeliveryPlan(radroots_storage::authored_delivery::AuthoredDeliveryPlanId)
+pub enum radroots_storage::authored_atomic::CancelAuthoredTarget
+pub radroots_storage::authored_atomic::CancelAuthoredTarget::ArtifactAdmission(radroots_storage::authored::AuthoredArtifactId)
+pub radroots_storage::authored_atomic::CancelAuthoredTarget::ArtifactSigning(radroots_storage::authored::AuthoredArtifactId)
+pub radroots_storage::authored_atomic::CancelAuthoredTarget::DeliveryPlan(radroots_storage::authored_delivery::AuthoredDeliveryPlanId)
+pub enum radroots_storage::authored_atomic::ClaimAuthoredTarget
+pub radroots_storage::authored_atomic::ClaimAuthoredTarget::ArtifactAdmission(radroots_storage::authored::AuthoredArtifactId)
+pub radroots_storage::authored_atomic::ClaimAuthoredTarget::ArtifactSigning(radroots_storage::authored::AuthoredArtifactId)
+pub radroots_storage::authored_atomic::ClaimAuthoredTarget::DeliveryPlan(radroots_storage::authored_delivery::AuthoredDeliveryPlanId)
+pub struct radroots_storage::authored_atomic::ApplyAdmissionResult
+impl radroots_storage::authored_atomic::ApplyAdmissionResult
+pub const fn radroots_storage::authored_atomic::ApplyAdmissionResult::applied_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::authored_atomic::ApplyAdmissionResult::artifact_id(&self) -> radroots_storage::authored::AuthoredArtifactId
+pub const fn radroots_storage::authored_atomic::ApplyAdmissionResult::failure(&self) -> core::option::Option<&radroots_storage::authored::WorkFailure>
+pub const fn radroots_storage::authored_atomic::ApplyAdmissionResult::fence(&self) -> &radroots_storage::authored_atomic::WorkFence
+pub fn radroots_storage::authored_atomic::ApplyAdmissionResult::new(radroots_storage::authored::AuthoredArtifactId, radroots_storage::authored_atomic::WorkFence, radroots_storage::authored::AdmissionState, core::option::Option<radroots_storage::authored::WorkFailure>, core::option::Option<radroots_storage::authored::RetrySchedule>, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored_atomic::ApplyAdmissionResult::retry(&self) -> core::option::Option<&radroots_storage::authored::RetrySchedule>
+pub const fn radroots_storage::authored_atomic::ApplyAdmissionResult::state(&self) -> radroots_storage::authored::AdmissionState
+pub struct radroots_storage::authored_atomic::ApplyDeliveryAttempt
+impl radroots_storage::authored_atomic::ApplyDeliveryAttempt
+pub const fn radroots_storage::authored_atomic::ApplyDeliveryAttempt::applied_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::authored_atomic::ApplyDeliveryAttempt::fence(&self) -> &radroots_storage::authored_atomic::WorkFence
+pub fn radroots_storage::authored_atomic::ApplyDeliveryAttempt::new(radroots_storage::authored_delivery::AuthoredDeliveryPlanId, radroots_storage::authored_atomic::WorkFence, radroots_storage::authored_delivery::DeliveryAttemptOutcome, core::option::Option<radroots_storage::authored::RetrySchedule>, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored_atomic::ApplyDeliveryAttempt::outcome(&self) -> &radroots_storage::authored_delivery::DeliveryAttemptOutcome
+pub const fn radroots_storage::authored_atomic::ApplyDeliveryAttempt::plan_id(&self) -> radroots_storage::authored_delivery::AuthoredDeliveryPlanId
+pub const fn radroots_storage::authored_atomic::ApplyDeliveryAttempt::retry(&self) -> core::option::Option<&radroots_storage::authored::RetrySchedule>
+pub struct radroots_storage::authored_atomic::ApplySignedArtifact
+impl radroots_storage::authored_atomic::ApplySignedArtifact
+pub const fn radroots_storage::authored_atomic::ApplySignedArtifact::applied_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::authored_atomic::ApplySignedArtifact::artifact_id(&self) -> radroots_storage::authored::AuthoredArtifactId
+pub const fn radroots_storage::authored_atomic::ApplySignedArtifact::event(&self) -> &radroots_event::draft::SignedEvent
+pub const fn radroots_storage::authored_atomic::ApplySignedArtifact::fence(&self) -> &radroots_storage::authored_atomic::WorkFence
+pub fn radroots_storage::authored_atomic::ApplySignedArtifact::new(radroots_storage::authored::AuthoredArtifactId, radroots_storage::authored_atomic::WorkFence, radroots_event::draft::SignedEvent, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::authored_atomic::ApplyWorkFailure
+impl radroots_storage::authored_atomic::ApplyWorkFailure
+pub const fn radroots_storage::authored_atomic::ApplyWorkFailure::applied_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::authored_atomic::ApplyWorkFailure::failure(&self) -> &radroots_storage::authored::WorkFailure
+pub const fn radroots_storage::authored_atomic::ApplyWorkFailure::fence(&self) -> &radroots_storage::authored_atomic::WorkFence
+pub fn radroots_storage::authored_atomic::ApplyWorkFailure::new(radroots_storage::authored_atomic::AuthoredWorkTarget, radroots_storage::authored_atomic::WorkFence, radroots_storage::authored::WorkFailure, core::option::Option<radroots_storage::authored::RetrySchedule>, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored_atomic::ApplyWorkFailure::retry(&self) -> core::option::Option<&radroots_storage::authored::RetrySchedule>
+pub const fn radroots_storage::authored_atomic::ApplyWorkFailure::target(&self) -> &radroots_storage::authored_atomic::AuthoredWorkTarget
+pub struct radroots_storage::authored_atomic::AuthoredAtomicReceipt
+impl radroots_storage::authored_atomic::AuthoredAtomicReceipt
+pub const fn radroots_storage::authored_atomic::AuthoredAtomicReceipt::commit_id(&self) -> radroots_storage::atomic::AtomicCommitId
+pub const fn radroots_storage::authored_atomic::AuthoredAtomicReceipt::committed_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::authored_atomic::AuthoredAtomicReceipt::digest(&self) -> radroots_storage::atomic::AtomicCommitDigest
+pub const fn radroots_storage::authored_atomic::AuthoredAtomicReceipt::disposition(&self) -> radroots_storage::atomic::AtomicCommitDisposition
+pub fn radroots_storage::authored_atomic::AuthoredAtomicReceipt::from_durable_parts(radroots_storage::atomic::AtomicCommitId, radroots_storage::atomic::AtomicCommitDigest, radroots_storage::atomic::AtomicCommitDisposition, u64, radroots_storage::authored_atomic::AuthoredAtomicOutcome) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::authored_atomic::AuthoredAtomicReceipt::new(&radroots_storage::authored_atomic::AuthoredAtomicCommand, radroots_storage::atomic::AtomicCommitDisposition, u64, radroots_storage::authored_atomic::AuthoredAtomicOutcome) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored_atomic::AuthoredAtomicReceipt::outcome(&self) -> &radroots_storage::authored_atomic::AuthoredAtomicOutcome
+pub struct radroots_storage::authored_atomic::CancelAuthoredWork
+impl radroots_storage::authored_atomic::CancelAuthoredWork
+pub const fn radroots_storage::authored_atomic::CancelAuthoredWork::cancelled_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::authored_atomic::CancelAuthoredWork::expected_revision(&self) -> core::num::nonzero::NonZeroU64
+pub const fn radroots_storage::authored_atomic::CancelAuthoredWork::new(radroots_storage::authored_atomic::CancelAuthoredTarget, core::num::nonzero::NonZeroU64, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored_atomic::CancelAuthoredWork::target(&self) -> &radroots_storage::authored_atomic::CancelAuthoredTarget
+pub struct radroots_storage::authored_atomic::ClaimAuthoredWork
+impl radroots_storage::authored_atomic::ClaimAuthoredWork
+pub const fn radroots_storage::authored_atomic::ClaimAuthoredWork::claim(&self) -> &radroots_storage::authored::WorkClaim
+pub const fn radroots_storage::authored_atomic::ClaimAuthoredWork::new(radroots_storage::authored_atomic::ClaimAuthoredTarget, radroots_storage::authored::WorkClaim) -> Self
+pub const fn radroots_storage::authored_atomic::ClaimAuthoredWork::target(&self) -> &radroots_storage::authored_atomic::ClaimAuthoredTarget
+pub struct radroots_storage::authored_atomic::PrepareAuthoredOperation
+impl radroots_storage::authored_atomic::PrepareAuthoredOperation
+pub fn radroots_storage::authored_atomic::PrepareAuthoredOperation::artifacts(&self) -> &[radroots_storage::authored::AuthoredArtifact]
+pub fn radroots_storage::authored_atomic::PrepareAuthoredOperation::delivery_plans(&self) -> &[radroots_storage::authored_delivery::AuthoredDeliveryPlan]
+pub const fn radroots_storage::authored_atomic::PrepareAuthoredOperation::input_digest(&self) -> radroots_storage::atomic::AtomicCommitDigest
+pub fn radroots_storage::authored_atomic::PrepareAuthoredOperation::new(radroots_storage::authored::AuthoredOperation, alloc::vec::Vec<radroots_storage::authored::AuthoredArtifact>, alloc::vec::Vec<radroots_storage::authored_delivery::AuthoredDeliveryPlan>, radroots_storage::atomic::AtomicCommitDigest, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored_atomic::PrepareAuthoredOperation::operation(&self) -> &radroots_storage::authored::AuthoredOperation
+pub const fn radroots_storage::authored_atomic::PrepareAuthoredOperation::requested_at_unix_ms(&self) -> u64
+pub struct radroots_storage::authored_atomic::WorkFence
+impl radroots_storage::authored_atomic::WorkFence
+pub const fn radroots_storage::authored_atomic::WorkFence::generation(&self) -> core::num::nonzero::NonZeroU64
+pub const fn radroots_storage::authored_atomic::WorkFence::new([u8; 16], core::num::nonzero::NonZeroU64, core::num::nonzero::NonZeroU64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored_atomic::WorkFence::row_revision(&self) -> core::num::nonzero::NonZeroU64
+pub const fn radroots_storage::authored_atomic::WorkFence::token(&self) -> &[u8; 16]
+pub trait radroots_storage::authored_atomic::AuthoredAtomicStorage: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::authored_atomic::AuthoredAtomicStorage::authored_artifact(&self, radroots_storage::authored::AuthoredArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored::AuthoredArtifact>, radroots_storage::Error>>
+pub fn radroots_storage::authored_atomic::AuthoredAtomicStorage::authored_delivery_plan(&self, radroots_storage::authored_delivery::AuthoredDeliveryPlanId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored_delivery::AuthoredDeliveryPlan>, radroots_storage::Error>>
+pub fn radroots_storage::authored_atomic::AuthoredAtomicStorage::authored_operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored::AuthoredOperation>, radroots_storage::Error>>
+pub fn radroots_storage::authored_atomic::AuthoredAtomicStorage::authored_receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored_atomic::AuthoredAtomicReceipt>, radroots_storage::Error>>
+pub fn radroots_storage::authored_atomic::AuthoredAtomicStorage::execute_authored(&self, radroots_storage::authored_atomic::AuthoredAtomicCommand) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::authored_atomic::AuthoredAtomicReceipt, radroots_storage::Error>>
+impl radroots_storage::authored_atomic::AuthoredAtomicStorage for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::authored_artifact(&self, radroots_storage::authored::AuthoredArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored::AuthoredArtifact>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::authored_delivery_plan(&self, radroots_storage::authored_delivery::AuthoredDeliveryPlanId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored_delivery::AuthoredDeliveryPlan>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::authored_operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored::AuthoredOperation>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::authored_receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored_atomic::AuthoredAtomicReceipt>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::execute_authored(&self, radroots_storage::authored_atomic::AuthoredAtomicCommand) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::authored_atomic::AuthoredAtomicReceipt, radroots_storage::Error>>
+pub mod radroots_storage::authored_delivery
+pub enum radroots_storage::authored_delivery::AuthoredDeliveryState
+pub radroots_storage::authored_delivery::AuthoredDeliveryState::Cancelled
+pub radroots_storage::authored_delivery::AuthoredDeliveryState::Exhausted
+pub radroots_storage::authored_delivery::AuthoredDeliveryState::FailedTerminal
+pub radroots_storage::authored_delivery::AuthoredDeliveryState::Pending
+pub radroots_storage::authored_delivery::AuthoredDeliveryState::Retryable
+pub radroots_storage::authored_delivery::AuthoredDeliveryState::Satisfied
+impl radroots_storage::authored_delivery::AuthoredDeliveryState
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryState::is_terminal(self) -> bool
+pub enum radroots_storage::authored_delivery::DeliveryAttemptOutcome
+pub radroots_storage::authored_delivery::DeliveryAttemptOutcome::Receipt(radroots_transport::sink::DeliveryReceipt)
+pub radroots_storage::authored_delivery::DeliveryAttemptOutcome::SinkFailure(radroots_transport::sink::SinkFailure)
+pub struct radroots_storage::authored_delivery::AuthoredDeliveryAttempt
+impl radroots_storage::authored_delivery::AuthoredDeliveryAttempt
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryAttempt::attempt(&self) -> core::num::nonzero::NonZeroU32
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryAttempt::outcome(&self) -> &radroots_storage::authored_delivery::DeliveryAttemptOutcome
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryAttempt::reconstruct(core::num::nonzero::NonZeroU32, u64, radroots_storage::authored_delivery::DeliveryAttemptOutcome, radroots_transport::policy::SatisfactionState) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryAttempt::recorded_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryAttempt::satisfaction(&self) -> radroots_transport::policy::SatisfactionState
+pub struct radroots_storage::authored_delivery::AuthoredDeliveryIntent
+impl radroots_storage::authored_delivery::AuthoredDeliveryIntent
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryIntent::deadline_unix_ms(&self) -> u64
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryIntent::from_request(&radroots_transport::sink::DeliveryRequest) -> Self
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryIntent::materialize(&self, radroots_transport::sink::DeliveryPayload) -> core::result::Result<radroots_transport::sink::DeliveryRequest, radroots_storage::Error>
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryIntent::new(impl core::convert::Into<alloc::string::String>, radroots_transport::target::TargetSet, radroots_transport::policy::SatisfactionPolicy, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryIntent::request_id(&self) -> &radroots_transport::sink::DeliveryRequestId
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryIntent::satisfaction(&self) -> &radroots_transport::policy::SatisfactionPolicy
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryIntent::target_set(&self) -> &radroots_transport::target::TargetSet
+pub struct radroots_storage::authored_delivery::AuthoredDeliveryPlan
+impl radroots_storage::authored_delivery::AuthoredDeliveryPlan
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::apply_receipt(&mut self, &[u8; 16], core::num::nonzero::NonZeroU64, core::num::nonzero::NonZeroU64, radroots_transport::sink::DeliveryReceipt, core::option::Option<radroots_storage::authored::RetrySchedule>, u64) -> core::result::Result<(), radroots_storage::Error>
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::apply_sink_failure(&mut self, &[u8; 16], core::num::nonzero::NonZeroU64, core::num::nonzero::NonZeroU64, radroots_transport::sink::SinkFailure, core::option::Option<radroots_storage::authored::RetrySchedule>, u64) -> core::result::Result<(), radroots_storage::Error>
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::artifact_id(&self) -> radroots_storage::authored::AuthoredArtifactId
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::attempt_count(&self) -> u32
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::attempts(&self) -> &[radroots_storage::authored_delivery::AuthoredDeliveryAttempt]
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::bind_signed_event(&mut self, radroots_event::draft::SignedEvent, u64) -> core::result::Result<(), radroots_storage::Error>
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::cancel(&mut self, u64) -> core::result::Result<(), radroots_storage::Error>
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::claim(&mut self, radroots_storage::authored::WorkClaim, u64) -> core::result::Result<(), radroots_storage::Error>
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::claim_evidence(&self) -> core::option::Option<&radroots_storage::authored::WorkClaim>
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::created_at_unix_ms(&self) -> u64
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::evaluate_next_attempt(&self, &radroots_storage::authored_delivery::DeliveryAttemptOutcome) -> core::result::Result<radroots_transport::policy::SatisfactionState, radroots_storage::Error>
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::intent(&self) -> &radroots_storage::authored_delivery::AuthoredDeliveryIntent
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::last_failure(&self) -> core::option::Option<&radroots_storage::authored::WorkFailure>
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::new(radroots_storage::authored_delivery::AuthoredDeliveryPlanId, radroots_storage::authored::AuthoredArtifactId, radroots_storage::authored_delivery::AuthoredDeliveryIntent, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::new_bound(radroots_storage::authored_delivery::AuthoredDeliveryPlanId, radroots_storage::authored::AuthoredArtifactId, radroots_transport::sink::DeliveryRequest, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::plan_id(&self) -> radroots_storage::authored_delivery::AuthoredDeliveryPlanId
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::reconstruct(Self) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::request(&self) -> core::option::Option<&radroots_transport::sink::DeliveryRequest>
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::request_digest(&self) -> &[u8; 32]
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::retry(&self) -> core::option::Option<&radroots_storage::authored::RetrySchedule>
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::revision(&self) -> core::num::nonzero::NonZeroU64
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::state(&self) -> radroots_storage::authored_delivery::AuthoredDeliveryState
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::updated_at_unix_ms(&self) -> u64
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlan::validate(&self) -> core::result::Result<(), radroots_storage::Error>
+pub struct radroots_storage::authored_delivery::AuthoredDeliveryPlanId(_)
+impl radroots_storage::authored_delivery::AuthoredDeliveryPlanId
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlanId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::authored_delivery::AuthoredDeliveryPlanId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+impl core::convert::From<radroots_storage::authored_delivery::AuthoredDeliveryPlanId> for [u8; 16]
+pub fn [u8; 16]::from(radroots_storage::authored_delivery::AuthoredDeliveryPlanId) -> Self
+impl core::convert::TryFrom<[u8; 16]> for radroots_storage::authored_delivery::AuthoredDeliveryPlanId
+pub type radroots_storage::authored_delivery::AuthoredDeliveryPlanId::Error = radroots_storage::Error
+pub fn radroots_storage::authored_delivery::AuthoredDeliveryPlanId::try_from([u8; 16]) -> core::result::Result<Self, Self::Error>
+pub const radroots_storage::authored_delivery::DELIVERY_PLAN_ATTEMPTS_MAX: u32
+pub mod radroots_storage::backup
+pub enum radroots_storage::backup::BackupMemberKind
+pub radroots_storage::backup::BackupMemberKind::Metadata
+pub radroots_storage::backup::BackupMemberKind::Protected
+pub radroots_storage::backup::BackupMemberKind::Runtime
+pub enum radroots_storage::backup::BackupSecretPolicy
+pub radroots_storage::backup::BackupSecretPolicy::ExcludeProtectedStorage
+pub radroots_storage::backup::BackupSecretPolicy::IncludeProtectedStorage
+pub enum radroots_storage::backup::BackupStage
+pub radroots_storage::backup::BackupStage::Captured
+pub radroots_storage::backup::BackupStage::Failed
+pub radroots_storage::backup::BackupStage::Finalized
+pub radroots_storage::backup::BackupStage::Planned
+pub radroots_storage::backup::BackupStage::Verified
+pub enum radroots_storage::backup::BackupTransition
+pub radroots_storage::backup::BackupTransition::Captured(radroots_storage::backup::BackupManifest)
+pub radroots_storage::backup::BackupTransition::Fail
+pub radroots_storage::backup::BackupTransition::Finalize
+pub radroots_storage::backup::BackupTransition::Verified
+pub enum radroots_storage::backup::MemberVerification
+pub radroots_storage::backup::MemberVerification::HashMismatch
+pub radroots_storage::backup::MemberVerification::LengthMismatch
+pub radroots_storage::backup::MemberVerification::Missing
+pub radroots_storage::backup::MemberVerification::Unexpected
+pub radroots_storage::backup::MemberVerification::UnsafePath
+pub radroots_storage::backup::MemberVerification::Verified
+pub enum radroots_storage::backup::RestoreStage
+pub radroots_storage::backup::RestoreStage::Failed
+pub radroots_storage::backup::RestoreStage::Finalized
+pub radroots_storage::backup::RestoreStage::Finalizing
+pub radroots_storage::backup::RestoreStage::Staging
+pub radroots_storage::backup::RestoreStage::Verifying
+pub enum radroots_storage::backup::RestoreTransition
+pub radroots_storage::backup::RestoreTransition::Fail
+pub radroots_storage::backup::RestoreTransition::Finalize
+pub radroots_storage::backup::RestoreTransition::Staged
+pub radroots_storage::backup::RestoreTransition::Verified(alloc::vec::Vec<radroots_storage::backup::RestoreMemberStatus>)
+pub struct radroots_storage::backup::BackupFormatVersion(_)
+impl radroots_storage::backup::BackupFormatVersion
+pub const radroots_storage::backup::BackupFormatVersion::V1: Self
+pub const fn radroots_storage::backup::BackupFormatVersion::get(self) -> u16
+pub const fn radroots_storage::backup::BackupFormatVersion::new(u16) -> core::result::Result<Self, radroots_storage::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::backup::BackupFormatVersion
+pub fn radroots_storage::backup::BackupFormatVersion::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::backup::BackupId(_)
+impl radroots_storage::backup::BackupId
+pub const fn radroots_storage::backup::BackupId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::backup::BackupId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::backup::BackupId
+pub fn radroots_storage::backup::BackupId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::backup::BackupManifest
+impl radroots_storage::backup::BackupManifest
+pub const fn radroots_storage::backup::BackupManifest::backup_id(&self) -> radroots_storage::backup::BackupId
+pub const fn radroots_storage::backup::BackupManifest::created_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::backup::BackupManifest::format_version(&self) -> radroots_storage::backup::BackupFormatVersion
+pub fn radroots_storage::backup::BackupManifest::member(&self, &str) -> core::option::Option<&radroots_storage::backup::BackupMember>
+pub fn radroots_storage::backup::BackupManifest::members(&self) -> &[radroots_storage::backup::BackupMember]
+pub fn radroots_storage::backup::BackupManifest::new(radroots_storage::backup::BackupFormatVersion, radroots_storage::backup::BackupId, u64, radroots_storage::backup::BackupSecretPolicy, alloc::vec::Vec<radroots_storage::backup::BackupMember>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::backup::BackupManifest::secret_policy(&self) -> radroots_storage::backup::BackupSecretPolicy
+pub const fn radroots_storage::backup::BackupManifest::total_bytes(&self) -> u64
+impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::backup::BackupManifest
+pub fn radroots_storage::backup::BackupManifest::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::backup::BackupMember
+impl radroots_storage::backup::BackupMember
+pub const fn radroots_storage::backup::BackupMember::byte_length(&self) -> u64
+pub const fn radroots_storage::backup::BackupMember::kind(&self) -> radroots_storage::backup::BackupMemberKind
+pub fn radroots_storage::backup::BackupMember::new(impl core::convert::Into<alloc::string::String>, radroots_storage::backup::BackupMemberKind, u64, radroots_storage::backup::MemberDigest) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::backup::BackupMember::relative_path(&self) -> &str
+pub const fn radroots_storage::backup::BackupMember::sha256(&self) -> radroots_storage::backup::MemberDigest
+impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::backup::BackupMember
+pub fn radroots_storage::backup::BackupMember::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::backup::BackupOperation
+impl radroots_storage::backup::BackupOperation
+pub const fn radroots_storage::backup::BackupOperation::manifest(&self) -> core::option::Option<&radroots_storage::backup::BackupManifest>
+pub const fn radroots_storage::backup::BackupOperation::plan(&self) -> &radroots_storage::backup::BackupPlan
+pub const fn radroots_storage::backup::BackupOperation::planned(radroots_storage::backup::BackupPlan) -> Self
+pub const fn radroots_storage::backup::BackupOperation::revision(&self) -> radroots_storage::backup::ReliabilityRevision
+pub const fn radroots_storage::backup::BackupOperation::stage(&self) -> radroots_storage::backup::BackupStage
+pub fn radroots_storage::backup::BackupOperation::transition(&self, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::backup::BackupOperation::updated_at_unix_ms(&self) -> u64
+pub struct radroots_storage::backup::BackupPlan
+impl radroots_storage::backup::BackupPlan
+pub const fn radroots_storage::backup::BackupPlan::backup_id(&self) -> radroots_storage::backup::BackupId
+pub const fn radroots_storage::backup::BackupPlan::format_version(&self) -> radroots_storage::backup::BackupFormatVersion
+pub const fn radroots_storage::backup::BackupPlan::new(radroots_storage::backup::BackupId, radroots_storage::backup::BackupFormatVersion, radroots_storage::backup::BackupSecretPolicy, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::backup::BackupPlan::requested_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::backup::BackupPlan::secret_policy(&self) -> radroots_storage::backup::BackupSecretPolicy
+impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::backup::BackupPlan
+pub fn radroots_storage::backup::BackupPlan::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::backup::MemberDigest(_)
+impl radroots_storage::backup::MemberDigest
+pub const fn radroots_storage::backup::MemberDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::backup::MemberDigest::new([u8; 32]) -> Self
+pub struct radroots_storage::backup::ReliabilityRevision(_)
+impl radroots_storage::backup::ReliabilityRevision
+pub const radroots_storage::backup::ReliabilityRevision::INITIAL: Self
+pub const fn radroots_storage::backup::ReliabilityRevision::get(self) -> u64
+pub const fn radroots_storage::backup::ReliabilityRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::backup::ReliabilityRevision
+pub fn radroots_storage::backup::ReliabilityRevision::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::backup::RestoreMemberStatus
+impl radroots_storage::backup::RestoreMemberStatus
+pub fn radroots_storage::backup::RestoreMemberStatus::new(impl core::convert::Into<alloc::string::String>, radroots_storage::backup::MemberVerification) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::backup::RestoreMemberStatus::relative_path(&self) -> &str
+pub const fn radroots_storage::backup::RestoreMemberStatus::verification(&self) -> radroots_storage::backup::MemberVerification
+impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::backup::RestoreMemberStatus
+pub fn radroots_storage::backup::RestoreMemberStatus::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::backup::RestoreOperation
+impl radroots_storage::backup::RestoreOperation
+pub fn radroots_storage::backup::RestoreOperation::member_status(&self) -> &[radroots_storage::backup::RestoreMemberStatus]
+pub const fn radroots_storage::backup::RestoreOperation::plan(&self) -> &radroots_storage::backup::RestorePlan
+pub const fn radroots_storage::backup::RestoreOperation::revision(&self) -> radroots_storage::backup::ReliabilityRevision
+pub const fn radroots_storage::backup::RestoreOperation::stage(&self) -> radroots_storage::backup::RestoreStage
+pub const fn radroots_storage::backup::RestoreOperation::staging(radroots_storage::backup::RestorePlan) -> Self
+pub fn radroots_storage::backup::RestoreOperation::transition(&self, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::backup::RestorePlan
+impl radroots_storage::backup::RestorePlan
+pub const fn radroots_storage::backup::RestorePlan::accepted_secret_policy(&self) -> radroots_storage::backup::BackupSecretPolicy
+pub const fn radroots_storage::backup::RestorePlan::manifest(&self) -> &radroots_storage::backup::BackupManifest
+pub fn radroots_storage::backup::RestorePlan::new(radroots_storage::backup::BackupManifest, radroots_storage::backup::BackupSecretPolicy, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::backup::RestorePlan::requested_at_unix_ms(&self) -> u64
+impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::backup::RestorePlan
+pub fn radroots_storage::backup::RestorePlan::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub const radroots_storage::backup::BACKUP_MEMBER_MAX: usize
+pub const radroots_storage::backup::BACKUP_MEMBER_PATH_MAX_BYTES: usize
+pub trait radroots_storage::backup::StorageReliability: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::backup::StorageReliability::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+impl radroots_storage::backup::StorageReliability for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub mod radroots_storage::event
+pub use radroots_storage::event::BoxFuture
+pub use radroots_storage::event::EventId
+pub enum radroots_storage::event::AdmissionDisposition
+pub radroots_storage::event::AdmissionDisposition::Advanced
+pub radroots_storage::event::AdmissionDisposition::Duplicate
+pub radroots_storage::event::AdmissionDisposition::Inserted
+pub enum radroots_storage::event::AdmissionStage
+pub radroots_storage::event::AdmissionStage::Raw
+pub radroots_storage::event::AdmissionStage::Verified
+pub radroots_storage::event::AdmissionStage::Visible
+pub struct radroots_storage::event::AdmissionReceipt
+impl radroots_storage::event::AdmissionReceipt
+pub const fn radroots_storage::event::AdmissionReceipt::disposition(&self) -> radroots_storage::event::AdmissionDisposition
+pub const fn radroots_storage::event::AdmissionReceipt::event_id(&self) -> &radroots_event::id::EventId
+pub const fn radroots_storage::event::AdmissionReceipt::new(radroots_event::id::EventId, radroots_storage::event::EventPosition, radroots_storage::event::AdmissionStage, radroots_storage::event::AdmissionDisposition) -> Self
+pub const fn radroots_storage::event::AdmissionReceipt::position(&self) -> radroots_storage::event::EventPosition
+pub const fn radroots_storage::event::AdmissionReceipt::stage(&self) -> radroots_storage::event::AdmissionStage
+pub struct radroots_storage::event::EventAdmission
+impl radroots_storage::event::EventAdmission
+pub const fn radroots_storage::event::EventAdmission::event(&self) -> &radroots_event::draft::SignedEvent
+pub fn radroots_storage::event::EventAdmission::event_id(&self) -> &radroots_event::id::EventId
+pub const fn radroots_storage::event::EventAdmission::provenance(&self) -> &radroots_transport::source::EventProvenance
+pub const fn radroots_storage::event::EventAdmission::raw(radroots_transport::source::ObservedEvent) -> Self
+pub const fn radroots_storage::event::EventAdmission::stage(&self) -> radroots_storage::event::AdmissionStage
+pub fn radroots_storage::event::EventAdmission::verified(radroots_transport::source::ObservedEvent, radroots_event::verification::SignatureVerifiedEvent) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::event::EventAdmission::verified_event(&self) -> core::option::Option<&radroots_event::verification::SignatureVerifiedEvent>
+pub fn radroots_storage::event::EventAdmission::visible(radroots_transport::source::ObservedEvent, radroots_event::admission::VisibleEvent) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::event::EventAdmission::visible_event(&self) -> core::option::Option<&radroots_event::admission::VisibleEvent>
+pub struct radroots_storage::event::EventPage<T>
+impl<T> radroots_storage::event::EventPage<T>
+pub const fn radroots_storage::event::EventPage<T>::generation(&self) -> radroots_storage::event::SourceGeneration
+pub fn radroots_storage::event::EventPage<T>::items(&self) -> &[T]
+pub fn radroots_storage::event::EventPage<T>::new(radroots_storage::event::SourceGeneration, alloc::vec::Vec<T>, core::option::Option<radroots_storage::event::EventCursor>, radroots_storage::event::EventQueryBounds) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::event::EventPage<T>::next_cursor(&self) -> core::option::Option<radroots_storage::event::EventCursor>
+pub struct radroots_storage::event::EventPosition
+impl radroots_storage::event::EventPosition
+pub const fn radroots_storage::event::EventPosition::generation(self) -> radroots_storage::event::SourceGeneration
+pub const fn radroots_storage::event::EventPosition::new(radroots_storage::event::SourceGeneration, radroots_storage::event::EventSequence) -> Self
+pub const fn radroots_storage::event::EventPosition::sequence(self) -> radroots_storage::event::EventSequence
+pub struct radroots_storage::event::EventQuery
+impl radroots_storage::event::EventQuery
+pub const fn radroots_storage::event::EventQuery::all(radroots_storage::event::EventQueryBounds) -> Self
+pub const fn radroots_storage::event::EventQuery::bounds(&self) -> radroots_storage::event::EventQueryBounds
+pub fn radroots_storage::event::EventQuery::event_ids(&self) -> &[radroots_event::id::EventId]
+pub fn radroots_storage::event::EventQuery::for_ids(radroots_storage::event::EventQueryBounds, alloc::vec::Vec<radroots_event::id::EventId>) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::event::EventQuery::selects(&self, &radroots_event::id::EventId) -> bool
+pub struct radroots_storage::event::EventQueryBounds
+impl radroots_storage::event::EventQueryBounds
+pub const fn radroots_storage::event::EventQueryBounds::after(self, radroots_storage::event::EventCursor) -> Self
+pub const fn radroots_storage::event::EventQueryBounds::cursor(self) -> core::option::Option<radroots_storage::event::EventCursor>
+pub const fn radroots_storage::event::EventQueryBounds::first(u16) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::event::EventQueryBounds::limit(self) -> u16
+pub struct radroots_storage::event::EventSequence(_)
+impl radroots_storage::event::EventSequence
+pub const fn radroots_storage::event::EventSequence::get(self) -> u64
+pub const fn radroots_storage::event::EventSequence::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::event::SourceGeneration(_)
+impl radroots_storage::event::SourceGeneration
+pub const fn radroots_storage::event::SourceGeneration::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::event::SourceGeneration::new([u8; 32]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::event::StoredEventProvenance
+impl radroots_storage::event::StoredEventProvenance
+pub fn radroots_storage::event::StoredEventProvenance::from_stored_parts(radroots_storage::event::EventPosition, &str, &str, u64, core::option::Option<&str>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::event::StoredEventProvenance::new(radroots_storage::event::EventPosition, radroots_transport::source::EventProvenance) -> Self
+pub const fn radroots_storage::event::StoredEventProvenance::position(&self) -> radroots_storage::event::EventPosition
+pub const fn radroots_storage::event::StoredEventProvenance::provenance(&self) -> &radroots_transport::source::EventProvenance
+pub struct radroots_storage::event::StoredRawEvent
+impl radroots_storage::event::StoredRawEvent
+pub const fn radroots_storage::event::StoredRawEvent::event(&self) -> &radroots_event::draft::SignedEvent
+pub const fn radroots_storage::event::StoredRawEvent::new(radroots_storage::event::EventPosition, radroots_event::draft::SignedEvent, radroots_storage::event::AdmissionStage) -> Self
+pub const fn radroots_storage::event::StoredRawEvent::position(&self) -> radroots_storage::event::EventPosition
+pub const fn radroots_storage::event::StoredRawEvent::stage(&self) -> radroots_storage::event::AdmissionStage
+pub struct radroots_storage::event::StoredVerifiedEvent
+impl radroots_storage::event::StoredVerifiedEvent
+pub const fn radroots_storage::event::StoredVerifiedEvent::event(&self) -> &radroots_event::draft::SignedEvent
+pub const fn radroots_storage::event::StoredVerifiedEvent::new(radroots_storage::event::EventPosition, radroots_event::draft::SignedEvent) -> Self
+pub const fn radroots_storage::event::StoredVerifiedEvent::position(&self) -> radroots_storage::event::EventPosition
+pub struct radroots_storage::event::StoredVisibleEvent
+impl radroots_storage::event::StoredVisibleEvent
+pub const fn radroots_storage::event::StoredVisibleEvent::event(&self) -> &radroots_event::draft::SignedEvent
+pub const fn radroots_storage::event::StoredVisibleEvent::new(radroots_storage::event::EventPosition, radroots_event::draft::SignedEvent) -> Self
+pub const fn radroots_storage::event::StoredVisibleEvent::position(&self) -> radroots_storage::event::EventPosition
+pub const radroots_storage::event::EVENT_QUERY_ID_MAX: usize
+pub const radroots_storage::event::EVENT_QUERY_LIMIT_MAX: u16
+pub trait radroots_storage::event::EventStore: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::event::EventStore::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>>
+pub fn radroots_storage::event::EventStore::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>>
+pub fn radroots_storage::event::EventStore::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>>
+pub fn radroots_storage::event::EventStore::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>>
+pub fn radroots_storage::event::EventStore::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>>
+pub fn radroots_storage::event::EventStore::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>>
+impl radroots_storage::event::EventStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>>
+pub type radroots_storage::event::EventCursor = radroots_storage::event::EventPosition
+pub mod radroots_storage::journal
+pub use radroots_storage::journal::BoxFuture
+pub use radroots_storage::journal::EventId
+pub use radroots_storage::journal::OperationId
+pub enum radroots_storage::journal::CancellationState
+pub radroots_storage::journal::CancellationState::CancelledBeforeCommit
+pub radroots_storage::journal::CancellationState::NotRequested
+pub radroots_storage::journal::CancellationState::ObservedAfterCommit
+pub enum radroots_storage::journal::JournalStage
+pub radroots_storage::journal::JournalStage::Committed
+pub radroots_storage::journal::JournalStage::Prepared
+pub radroots_storage::journal::JournalStage::Recoverable
+pub radroots_storage::journal::JournalStage::Signed
+pub enum radroots_storage::journal::JournalState
+pub radroots_storage::journal::JournalState::Committed
+pub radroots_storage::journal::JournalState::Committed::committed_at_unix_ms: u64
+pub radroots_storage::journal::JournalState::Committed::event_id: radroots_event::id::EventId
+pub radroots_storage::journal::JournalState::Prepared
+pub radroots_storage::journal::JournalState::Recoverable(radroots_storage::journal::RecoveryRecord)
+pub radroots_storage::journal::JournalState::Signed
+pub radroots_storage::journal::JournalState::Signed::event_id: radroots_event::id::EventId
+impl radroots_storage::journal::JournalState
+pub const fn radroots_storage::journal::JournalState::stage(&self) -> radroots_storage::journal::JournalStage
+pub enum radroots_storage::journal::PrepareDisposition
+pub radroots_storage::journal::PrepareDisposition::Created
+pub radroots_storage::journal::PrepareDisposition::Replay
+pub enum radroots_storage::journal::RecoveryPoint
+pub radroots_storage::journal::RecoveryPoint::Prepared
+pub radroots_storage::journal::RecoveryPoint::Signed
+pub radroots_storage::journal::RecoveryPoint::Signed::event_id: radroots_event::id::EventId
+pub enum radroots_storage::journal::RecoveryReason
+pub radroots_storage::journal::RecoveryReason::CancelledBeforeCommit
+pub radroots_storage::journal::RecoveryReason::DeadlineExceeded
+pub radroots_storage::journal::RecoveryReason::Interrupted
+pub radroots_storage::journal::RecoveryReason::SignerUnavailable
+pub radroots_storage::journal::RecoveryReason::StorageUnavailable
+pub radroots_storage::journal::RecoveryReason::TransportUnavailable
+pub struct radroots_storage::journal::IdempotencyDigest(_)
+impl radroots_storage::journal::IdempotencyDigest
+pub const fn radroots_storage::journal::IdempotencyDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::journal::IdempotencyDigest::new([u8; 32]) -> Self
+pub struct radroots_storage::journal::IdempotencyKey(_)
+impl radroots_storage::journal::IdempotencyKey
+pub fn radroots_storage::journal::IdempotencyKey::as_str(&self) -> &str
+pub fn radroots_storage::journal::IdempotencyKey::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+impl core::fmt::Debug for radroots_storage::journal::IdempotencyKey
+pub fn radroots_storage::journal::IdempotencyKey::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_storage::journal::IdempotencyKey
+pub fn radroots_storage::journal::IdempotencyKey::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_storage::journal::IdempotencyKey
+pub fn radroots_storage::journal::IdempotencyKey::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::journal::JournalRevision(_)
+impl radroots_storage::journal::JournalRevision
+pub const radroots_storage::journal::JournalRevision::INITIAL: Self
+pub const fn radroots_storage::journal::JournalRevision::get(self) -> u64
+pub const fn radroots_storage::journal::JournalRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::journal::JournalTransition
+impl radroots_storage::journal::JournalTransition
+pub const fn radroots_storage::journal::JournalTransition::cancelled(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, u64) -> Self
+pub const fn radroots_storage::journal::JournalTransition::committed(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_event::id::EventId, u64) -> Self
+pub const fn radroots_storage::journal::JournalTransition::instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub const fn radroots_storage::journal::JournalTransition::recoverable(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_storage::journal::RecoveryRecord) -> Self
+pub const fn radroots_storage::journal::JournalTransition::resume(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision) -> Self
+pub const fn radroots_storage::journal::JournalTransition::signed(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_event::id::EventId) -> Self
+pub struct radroots_storage::journal::OperationInstanceId(_)
+impl radroots_storage::journal::OperationInstanceId
+pub const fn radroots_storage::journal::OperationInstanceId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::journal::OperationInstanceId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::journal::OperationRecord
+impl radroots_storage::journal::OperationRecord
+pub const fn radroots_storage::journal::OperationRecord::cancellation(&self) -> radroots_storage::journal::CancellationState
+pub fn radroots_storage::journal::OperationRecord::from_parts(radroots_storage::journal::OperationInstanceId, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey, radroots_storage::journal::IdempotencyDigest, u64, radroots_storage::journal::JournalRevision, radroots_storage::journal::JournalState, radroots_storage::journal::CancellationState) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::journal::OperationRecord::idempotency_key(&self) -> &radroots_storage::journal::IdempotencyKey
+pub const fn radroots_storage::journal::OperationRecord::input_digest(&self) -> radroots_storage::journal::IdempotencyDigest
+pub const fn radroots_storage::journal::OperationRecord::instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub const fn radroots_storage::journal::OperationRecord::operation_id(&self) -> radroots_protocol::runtime::v1::OperationId
+pub const fn radroots_storage::journal::OperationRecord::prepared_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::journal::OperationRecord::revision(&self) -> radroots_storage::journal::JournalRevision
+pub const fn radroots_storage::journal::OperationRecord::state(&self) -> &radroots_storage::journal::JournalState
+pub fn radroots_storage::journal::OperationRecord::transition(&self, &radroots_storage::journal::JournalTransition) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::journal::PrepareOperation
+impl radroots_storage::journal::PrepareOperation
+pub const fn radroots_storage::journal::PrepareOperation::idempotency_key(&self) -> &radroots_storage::journal::IdempotencyKey
+pub const fn radroots_storage::journal::PrepareOperation::input_digest(&self) -> radroots_storage::journal::IdempotencyDigest
+pub const fn radroots_storage::journal::PrepareOperation::instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub fn radroots_storage::journal::PrepareOperation::into_record(self) -> core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>
+pub fn radroots_storage::journal::PrepareOperation::new(radroots_storage::journal::OperationInstanceId, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey, radroots_storage::journal::IdempotencyDigest, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::journal::PrepareOperation::operation_id(&self) -> radroots_protocol::runtime::v1::OperationId
+pub struct radroots_storage::journal::PrepareReceipt
+impl radroots_storage::journal::PrepareReceipt
+pub const fn radroots_storage::journal::PrepareReceipt::disposition(&self) -> radroots_storage::journal::PrepareDisposition
+pub const fn radroots_storage::journal::PrepareReceipt::new(radroots_storage::journal::PrepareDisposition, radroots_storage::journal::OperationRecord) -> Self
+pub const fn radroots_storage::journal::PrepareReceipt::record(&self) -> &radroots_storage::journal::OperationRecord
+pub struct radroots_storage::journal::RecoveryRecord
+impl radroots_storage::journal::RecoveryRecord
+pub const fn radroots_storage::journal::RecoveryRecord::attempt(&self) -> u32
+pub const fn radroots_storage::journal::RecoveryRecord::new(radroots_storage::journal::RecoveryPoint, radroots_storage::journal::RecoveryReason, u32, core::option::Option<u64>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::journal::RecoveryRecord::point(&self) -> &radroots_storage::journal::RecoveryPoint
+pub const fn radroots_storage::journal::RecoveryRecord::reason(&self) -> radroots_storage::journal::RecoveryReason
+pub const fn radroots_storage::journal::RecoveryRecord::retry_not_before_unix_ms(&self) -> core::option::Option<u64>
+pub const radroots_storage::journal::IDEMPOTENCY_KEY_MAX_BYTES: usize
+pub const radroots_storage::journal::RECOVERABLE_QUERY_LIMIT_MAX: u16
+pub trait radroots_storage::journal::Journal: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::journal::Journal::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::journal::Journal::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::journal::Journal::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>>
+pub fn radroots_storage::journal::Journal::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::journal::Journal::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>>
+impl radroots_storage::journal::Journal for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>>
+pub mod radroots_storage::memory
+pub struct radroots_storage::memory::MemoryStorage
+impl radroots_storage::memory::MemoryStorage
+pub const fn radroots_storage::memory::MemoryStorage::generation(&self) -> radroots_storage::event::SourceGeneration
+pub const fn radroots_storage::memory::MemoryStorage::new(radroots_storage::event::SourceGeneration) -> Self
+impl core::default::Default for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::default() -> Self
+impl radroots_storage::atomic::AtomicStorage for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::commit(&self, radroots_storage::atomic::AtomicCommit) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::atomic::AtomicCommitReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::atomic::AtomicCommitReceipt>, radroots_storage::Error>>
+impl radroots_storage::authored_atomic::AuthoredAtomicStorage for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::authored_artifact(&self, radroots_storage::authored::AuthoredArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored::AuthoredArtifact>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::authored_delivery_plan(&self, radroots_storage::authored_delivery::AuthoredDeliveryPlanId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored_delivery::AuthoredDeliveryPlan>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::authored_operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored::AuthoredOperation>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::authored_receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::authored_atomic::AuthoredAtomicReceipt>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::execute_authored(&self, radroots_storage::authored_atomic::AuthoredAtomicCommand) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::authored_atomic::AuthoredAtomicReceipt, radroots_storage::Error>>
+impl radroots_storage::backup::StorageReliability for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+impl radroots_storage::event::EventStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>>
+impl radroots_storage::journal::Journal for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>>
+impl radroots_storage::outbox::Outbox for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>>
+impl radroots_storage::private_artifact::PrivateArtifactStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::expired(&self, u64, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::metadata(&self, radroots_storage::private_artifact::PrivateArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_metadata(&self, radroots_storage::private_artifact::PrivateArtifactMetadata) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::reseal_metadata(&self, radroots_storage::private_artifact::PrivateArtifactResealRequest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactResealReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+impl radroots_storage::projection::ProjectionStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::invalidation(&self, radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionInvalidation>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::rebuild(&self, radroots_storage::projection::RebuildTicketId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::RebuildTicket>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+impl radroots_storage::status::StorageStatusProvider for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::storage_status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub mod radroots_storage::outbox
+pub use radroots_storage::outbox::BoxFuture
+pub use radroots_storage::outbox::DeliveryOutcome
+pub use radroots_storage::outbox::DeliveryOutcomeKind
+pub use radroots_storage::outbox::DeliveryPayload
+pub use radroots_storage::outbox::DeliveryReceipt
+pub use radroots_storage::outbox::DeliveryRequest
+pub use radroots_storage::outbox::DeliveryTargetReceipt
+pub use radroots_storage::outbox::Retryability
+pub use radroots_storage::outbox::SatisfactionClass
+pub use radroots_storage::outbox::SatisfactionPolicy
+pub use radroots_storage::outbox::SatisfactionState
+pub use radroots_storage::outbox::TARGET_SET_MAX_ITEMS
+pub use radroots_storage::outbox::Target
+pub use radroots_storage::outbox::TargetFingerprint
+pub use radroots_storage::outbox::TargetLabel
+pub use radroots_storage::outbox::TargetPolicy
+pub use radroots_storage::outbox::TargetScope
+pub use radroots_storage::outbox::TargetSet
+pub use radroots_storage::outbox::TransportId
+pub use radroots_storage::outbox::evaluate_transport_satisfaction
+pub enum radroots_storage::outbox::EnqueueDisposition
+pub radroots_storage::outbox::EnqueueDisposition::Created
+pub radroots_storage::outbox::EnqueueDisposition::Replay
+pub enum radroots_storage::outbox::OutboxStage
+pub radroots_storage::outbox::OutboxStage::Exhausted
+pub radroots_storage::outbox::OutboxStage::Leased
+pub radroots_storage::outbox::OutboxStage::Pending
+pub radroots_storage::outbox::OutboxStage::Retryable
+pub radroots_storage::outbox::OutboxStage::Satisfied
+impl radroots_storage::outbox::OutboxStage
+pub const fn radroots_storage::outbox::OutboxStage::is_terminal(self) -> bool
+pub enum radroots_storage::outbox::SatisfactionResult
+pub radroots_storage::outbox::SatisfactionResult::Exhausted
+pub radroots_storage::outbox::SatisfactionResult::Pending
+pub radroots_storage::outbox::SatisfactionResult::Satisfied
+pub struct radroots_storage::outbox::ClaimOutboxItems
+impl radroots_storage::outbox::ClaimOutboxItems
+pub const fn radroots_storage::outbox::ClaimOutboxItems::lease_expires_at_unix_ms(&self) -> u64
+pub fn radroots_storage::outbox::ClaimOutboxItems::lease_id_for(&self, radroots_storage::outbox::OutboxItemId) -> radroots_storage::outbox::LeaseId
+pub const fn radroots_storage::outbox::ClaimOutboxItems::lease_id_seed(&self) -> radroots_storage::outbox::LeaseId
+pub const fn radroots_storage::outbox::ClaimOutboxItems::limit(&self) -> u16
+pub fn radroots_storage::outbox::ClaimOutboxItems::new(radroots_storage::outbox::LeaseOwner, radroots_storage::outbox::LeaseId, u64, u64, u16) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::outbox::ClaimOutboxItems::now_unix_ms(&self) -> u64
+pub const fn radroots_storage::outbox::ClaimOutboxItems::owner(&self) -> &radroots_storage::outbox::LeaseOwner
+pub struct radroots_storage::outbox::ClaimedOutboxItem
+impl radroots_storage::outbox::ClaimedOutboxItem
+pub const fn radroots_storage::outbox::ClaimedOutboxItem::lease(&self) -> &radroots_storage::outbox::OutboxLease
+pub const fn radroots_storage::outbox::ClaimedOutboxItem::new(radroots_storage::outbox::OutboxRecord, radroots_storage::outbox::OutboxLease) -> Self
+pub const fn radroots_storage::outbox::ClaimedOutboxItem::record(&self) -> &radroots_storage::outbox::OutboxRecord
+pub struct radroots_storage::outbox::DeliveryAttempt(_)
+impl radroots_storage::outbox::DeliveryAttempt
+pub const radroots_storage::outbox::DeliveryAttempt::FIRST: Self
+pub const fn radroots_storage::outbox::DeliveryAttempt::get(self) -> u32
+pub const fn radroots_storage::outbox::DeliveryAttempt::new(u32) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::outbox::DeliveryAttemptEvidence
+impl radroots_storage::outbox::DeliveryAttemptEvidence
+pub const fn radroots_storage::outbox::DeliveryAttemptEvidence::attempt(&self) -> radroots_storage::outbox::DeliveryAttempt
+pub const fn radroots_storage::outbox::DeliveryAttemptEvidence::expected_revision(&self) -> radroots_storage::outbox::OutboxRevision
+pub const fn radroots_storage::outbox::DeliveryAttemptEvidence::item_id(&self) -> radroots_storage::outbox::OutboxItemId
+pub const fn radroots_storage::outbox::DeliveryAttemptEvidence::lease_id(&self) -> radroots_storage::outbox::LeaseId
+pub fn radroots_storage::outbox::DeliveryAttemptEvidence::new(radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, radroots_storage::outbox::DeliveryAttempt, radroots_transport::sink::DeliveryReceipt, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::outbox::DeliveryAttemptEvidence::receipt(&self) -> &radroots_transport::sink::DeliveryReceipt
+pub const fn radroots_storage::outbox::DeliveryAttemptEvidence::recorded_at_unix_ms(&self) -> u64
+pub struct radroots_storage::outbox::DeliveryPlanDigest(_)
+impl radroots_storage::outbox::DeliveryPlanDigest
+pub const fn radroots_storage::outbox::DeliveryPlanDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::outbox::DeliveryPlanDigest::new([u8; 32]) -> Self
+pub struct radroots_storage::outbox::EnqueueOutboxItem
+impl radroots_storage::outbox::EnqueueOutboxItem
+pub const fn radroots_storage::outbox::EnqueueOutboxItem::created_at_unix_ms(&self) -> u64
+pub fn radroots_storage::outbox::EnqueueOutboxItem::into_record(self) -> radroots_storage::outbox::OutboxRecord
+pub const fn radroots_storage::outbox::EnqueueOutboxItem::item_id(&self) -> radroots_storage::outbox::OutboxItemId
+pub fn radroots_storage::outbox::EnqueueOutboxItem::new(radroots_storage::outbox::OutboxItemId, radroots_storage::journal::OperationInstanceId, radroots_storage::outbox::DeliveryPlanDigest, radroots_transport::sink::DeliveryRequest, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::outbox::EnqueueOutboxItem::operation_instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub const fn radroots_storage::outbox::EnqueueOutboxItem::plan_digest(&self) -> radroots_storage::outbox::DeliveryPlanDigest
+pub const fn radroots_storage::outbox::EnqueueOutboxItem::request(&self) -> &radroots_transport::sink::DeliveryRequest
+pub struct radroots_storage::outbox::EnqueueReceipt
+impl radroots_storage::outbox::EnqueueReceipt
+pub const fn radroots_storage::outbox::EnqueueReceipt::disposition(&self) -> radroots_storage::outbox::EnqueueDisposition
+pub const fn radroots_storage::outbox::EnqueueReceipt::new(radroots_storage::outbox::EnqueueDisposition, radroots_storage::outbox::OutboxRecord) -> Self
+pub const fn radroots_storage::outbox::EnqueueReceipt::record(&self) -> &radroots_storage::outbox::OutboxRecord
+pub struct radroots_storage::outbox::LeaseId(_)
+impl radroots_storage::outbox::LeaseId
+pub const fn radroots_storage::outbox::LeaseId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::outbox::LeaseId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::outbox::LeaseOwner(_)
+impl radroots_storage::outbox::LeaseOwner
+pub fn radroots_storage::outbox::LeaseOwner::as_str(&self) -> &str
+pub fn radroots_storage::outbox::LeaseOwner::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+impl core::fmt::Debug for radroots_storage::outbox::LeaseOwner
+pub fn radroots_storage::outbox::LeaseOwner::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_storage::outbox::LeaseOwner
+pub fn radroots_storage::outbox::LeaseOwner::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_storage::outbox::LeaseOwner
+pub fn radroots_storage::outbox::LeaseOwner::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::outbox::OutboxItemId(_)
+impl radroots_storage::outbox::OutboxItemId
+pub const fn radroots_storage::outbox::OutboxItemId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::outbox::OutboxItemId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::outbox::OutboxLease
+impl radroots_storage::outbox::OutboxLease
+pub const fn radroots_storage::outbox::OutboxLease::acquired_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::outbox::OutboxLease::expires_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::outbox::OutboxLease::id(&self) -> radroots_storage::outbox::LeaseId
+pub const fn radroots_storage::outbox::OutboxLease::is_active_at(&self, u64) -> bool
+pub fn radroots_storage::outbox::OutboxLease::new(radroots_storage::outbox::LeaseId, radroots_storage::outbox::LeaseOwner, u64, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::outbox::OutboxLease::owner(&self) -> &radroots_storage::outbox::LeaseOwner
+pub struct radroots_storage::outbox::OutboxRecord
+impl radroots_storage::outbox::OutboxRecord
+pub fn radroots_storage::outbox::OutboxRecord::claim(&mut self, radroots_storage::outbox::OutboxLease) -> core::result::Result<(), radroots_storage::Error>
+pub const fn radroots_storage::outbox::OutboxRecord::created_at_unix_ms(&self) -> u64
+pub fn radroots_storage::outbox::OutboxRecord::evidence(&self) -> &[radroots_storage::outbox::TargetDeliveryEvidence]
+pub fn radroots_storage::outbox::OutboxRecord::from_durable_parts(radroots_storage::outbox::EnqueueOutboxItem, radroots_storage::outbox::OutboxRevision, radroots_storage::outbox::OutboxStage, core::option::Option<radroots_storage::outbox::OutboxLease>, core::option::Option<radroots_storage::outbox::DeliveryAttempt>, alloc::vec::Vec<radroots_storage::outbox::TargetDeliveryEvidence>, radroots_storage::outbox::SatisfactionResult, core::option::Option<u64>, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::outbox::OutboxRecord::item_id(&self) -> radroots_storage::outbox::OutboxItemId
+pub const fn radroots_storage::outbox::OutboxRecord::last_attempt(&self) -> core::option::Option<radroots_storage::outbox::DeliveryAttempt>
+pub fn radroots_storage::outbox::OutboxRecord::latest_target_evidence(&self, &radroots_transport::target::TargetFingerprint) -> core::option::Option<&radroots_storage::outbox::TargetDeliveryEvidence>
+pub const fn radroots_storage::outbox::OutboxRecord::lease(&self) -> core::option::Option<&radroots_storage::outbox::OutboxLease>
+pub const fn radroots_storage::outbox::OutboxRecord::operation_instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub const fn radroots_storage::outbox::OutboxRecord::plan_digest(&self) -> radroots_storage::outbox::DeliveryPlanDigest
+pub fn radroots_storage::outbox::OutboxRecord::record_attempt(&mut self, radroots_storage::outbox::DeliveryAttemptEvidence) -> core::result::Result<(), radroots_storage::Error>
+pub fn radroots_storage::outbox::OutboxRecord::release(&mut self, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> core::result::Result<(), radroots_storage::Error>
+pub const fn radroots_storage::outbox::OutboxRecord::request(&self) -> &radroots_transport::sink::DeliveryRequest
+pub const fn radroots_storage::outbox::OutboxRecord::retry_not_before_unix_ms(&self) -> core::option::Option<u64>
+pub const fn radroots_storage::outbox::OutboxRecord::revision(&self) -> radroots_storage::outbox::OutboxRevision
+pub const fn radroots_storage::outbox::OutboxRecord::satisfaction(&self) -> radroots_storage::outbox::SatisfactionResult
+pub const fn radroots_storage::outbox::OutboxRecord::stage(&self) -> radroots_storage::outbox::OutboxStage
+pub const fn radroots_storage::outbox::OutboxRecord::updated_at_unix_ms(&self) -> u64
+pub struct radroots_storage::outbox::OutboxRevision(_)
+impl radroots_storage::outbox::OutboxRevision
+pub const radroots_storage::outbox::OutboxRevision::INITIAL: Self
+pub const fn radroots_storage::outbox::OutboxRevision::get(self) -> u64
+pub const fn radroots_storage::outbox::OutboxRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::outbox::OutboxStatus
+pub radroots_storage::outbox::OutboxStatus::exhausted: u64
+pub radroots_storage::outbox::OutboxStatus::leased: u64
+pub radroots_storage::outbox::OutboxStatus::pending: u64
+pub radroots_storage::outbox::OutboxStatus::retryable: u64
+pub radroots_storage::outbox::OutboxStatus::satisfied: u64
+impl radroots_storage::outbox::OutboxStatus
+pub fn radroots_storage::outbox::OutboxStatus::total(self) -> core::option::Option<u64>
+pub struct radroots_storage::outbox::TargetDeliveryEvidence
+impl radroots_storage::outbox::TargetDeliveryEvidence
+pub const fn radroots_storage::outbox::TargetDeliveryEvidence::attempt(&self) -> radroots_storage::outbox::DeliveryAttempt
+pub fn radroots_storage::outbox::TargetDeliveryEvidence::new(radroots_transport::target::TargetFingerprint, radroots_storage::outbox::DeliveryAttempt, bool, radroots_transport::outcome::DeliveryOutcome, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::outbox::TargetDeliveryEvidence::outcome(&self) -> &radroots_transport::outcome::DeliveryOutcome
+pub const fn radroots_storage::outbox::TargetDeliveryEvidence::recorded_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::outbox::TargetDeliveryEvidence::target(&self) -> &radroots_transport::target::TargetFingerprint
+pub const fn radroots_storage::outbox::TargetDeliveryEvidence::was_attempted(&self) -> bool
+pub const radroots_storage::outbox::LEASE_OWNER_MAX_BYTES: usize
+pub const radroots_storage::outbox::OUTBOX_CLAIM_LIMIT_MAX: u16
+pub trait radroots_storage::outbox::Outbox: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::outbox::Outbox::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>>
+pub fn radroots_storage::outbox::Outbox::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>>
+pub fn radroots_storage::outbox::Outbox::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>>
+pub fn radroots_storage::outbox::Outbox::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::outbox::Outbox::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::outbox::Outbox::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>>
+impl radroots_storage::outbox::Outbox for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>>
+pub mod radroots_storage::private_artifact
+pub enum radroots_storage::private_artifact::DeletionReason
+pub radroots_storage::private_artifact::DeletionReason::IntegrityFailure
+pub radroots_storage::private_artifact::DeletionReason::KeyRevoked
+pub radroots_storage::private_artifact::DeletionReason::OperatorRequested
+pub radroots_storage::private_artifact::DeletionReason::RetentionExpired
+pub radroots_storage::private_artifact::DeletionReason::UserRequested
+pub enum radroots_storage::private_artifact::PrivateArtifactResealDisposition
+pub radroots_storage::private_artifact::PrivateArtifactResealDisposition::Committed
+pub radroots_storage::private_artifact::PrivateArtifactResealDisposition::Replayed
+pub enum radroots_storage::private_artifact::PrivateArtifactStage
+pub radroots_storage::private_artifact::PrivateArtifactStage::Active
+pub radroots_storage::private_artifact::PrivateArtifactStage::Expired
+pub radroots_storage::private_artifact::PrivateArtifactStage::Tombstoned
+pub struct radroots_storage::private_artifact::ArtifactCommitment(_)
+impl radroots_storage::private_artifact::ArtifactCommitment
+pub const fn radroots_storage::private_artifact::ArtifactCommitment::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::private_artifact::ArtifactCommitment::new([u8; 32]) -> Self
+pub struct radroots_storage::private_artifact::ArtifactKind(_)
+impl radroots_storage::private_artifact::ArtifactKind
+pub fn radroots_storage::private_artifact::ArtifactKind::as_str(&self) -> &str
+pub fn radroots_storage::private_artifact::ArtifactKind::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::private_artifact::ArtifactSchemaId(_)
+impl radroots_storage::private_artifact::ArtifactSchemaId
+pub fn radroots_storage::private_artifact::ArtifactSchemaId::as_str(&self) -> &str
+pub fn radroots_storage::private_artifact::ArtifactSchemaId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::private_artifact::ArtifactTombstone
+impl radroots_storage::private_artifact::ArtifactTombstone
+pub const fn radroots_storage::private_artifact::ArtifactTombstone::commitment(self) -> radroots_storage::private_artifact::ArtifactCommitment
+pub const fn radroots_storage::private_artifact::ArtifactTombstone::deleted_at_unix_ms(self) -> u64
+pub const fn radroots_storage::private_artifact::ArtifactTombstone::reason(self) -> radroots_storage::private_artifact::DeletionReason
+pub struct radroots_storage::private_artifact::DurableSecretReference
+impl radroots_storage::private_artifact::DurableSecretReference
+pub const fn radroots_storage::private_artifact::DurableSecretReference::key_version(&self) -> u32
+pub fn radroots_storage::private_artifact::DurableSecretReference::new(impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>, u32) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::private_artifact::DurableSecretReference::opaque_reference(&self) -> &str
+pub fn radroots_storage::private_artifact::DurableSecretReference::provider(&self) -> &str
+impl core::fmt::Debug for radroots_storage::private_artifact::DurableSecretReference
+pub fn radroots_storage::private_artifact::DurableSecretReference::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_storage::private_artifact::DurableSecretReference
+pub fn radroots_storage::private_artifact::DurableSecretReference::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_storage::private_artifact::DurableSecretReference
+pub fn radroots_storage::private_artifact::DurableSecretReference::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::private_artifact::PrivateArtifactEnvelopeContext
+impl radroots_storage::private_artifact::PrivateArtifactEnvelopeContext
+pub fn radroots_storage::private_artifact::PrivateArtifactEnvelopeContext::fingerprint(&self) -> [u8; 32]
+pub fn radroots_storage::private_artifact::PrivateArtifactEnvelopeContext::payload_schema(&self) -> &str
+pub fn radroots_storage::private_artifact::PrivateArtifactEnvelopeContext::purpose(&self) -> &str
+pub fn radroots_storage::private_artifact::PrivateArtifactEnvelopeContext::subject(&self) -> &str
+pub const fn radroots_storage::private_artifact::PrivateArtifactEnvelopeContext::subject_type(&self) -> &'static str
+impl core::fmt::Debug for radroots_storage::private_artifact::PrivateArtifactEnvelopeContext
+pub fn radroots_storage::private_artifact::PrivateArtifactEnvelopeContext::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_storage::private_artifact::PrivateArtifactEnvelopeMigrationStatus
+pub radroots_storage::private_artifact::PrivateArtifactEnvelopeMigrationStatus::blocked_provider: u64
+pub radroots_storage::private_artifact::PrivateArtifactEnvelopeMigrationStatus::conflicted: u64
+pub radroots_storage::private_artifact::PrivateArtifactEnvelopeMigrationStatus::corrupt: u64
+pub radroots_storage::private_artifact::PrivateArtifactEnvelopeMigrationStatus::v1_pending: u64
+pub radroots_storage::private_artifact::PrivateArtifactEnvelopeMigrationStatus::v2_current: u64
+impl radroots_storage::private_artifact::PrivateArtifactEnvelopeMigrationStatus
+pub fn radroots_storage::private_artifact::PrivateArtifactEnvelopeMigrationStatus::total(self) -> core::option::Option<u64>
+pub struct radroots_storage::private_artifact::PrivateArtifactId(_)
+impl radroots_storage::private_artifact::PrivateArtifactId
+pub const fn radroots_storage::private_artifact::PrivateArtifactId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::private_artifact::PrivateArtifactId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+impl core::fmt::Debug for radroots_storage::private_artifact::PrivateArtifactId
+pub fn radroots_storage::private_artifact::PrivateArtifactId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_storage::private_artifact::PrivateArtifactMetadata
+impl radroots_storage::private_artifact::PrivateArtifactMetadata
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::artifact_id(&self) -> radroots_storage::private_artifact::PrivateArtifactId
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::commitment(&self) -> radroots_storage::private_artifact::ArtifactCommitment
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::created_at_unix_ms(&self) -> u64
+pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::envelope_context(&self) -> radroots_storage::private_artifact::PrivateArtifactEnvelopeContext
+pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::from_durable_parts(radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::ArtifactKind, radroots_storage::private_artifact::ArtifactSchemaId, radroots_storage::private_artifact::ArtifactCommitment, u64, radroots_storage::private_artifact::DurableSecretReference, radroots_storage::private_artifact::RetentionPolicy, radroots_storage::private_artifact::PrivateArtifactRevision, radroots_storage::private_artifact::PrivateArtifactStage, u64, u64, core::option::Option<(u64, radroots_storage::private_artifact::DeletionReason, radroots_storage::private_artifact::ArtifactCommitment)>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::kind(&self) -> &radroots_storage::private_artifact::ArtifactKind
+pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::new(radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::ArtifactKind, radroots_storage::private_artifact::ArtifactSchemaId, radroots_storage::private_artifact::ArtifactCommitment, u64, radroots_storage::private_artifact::DurableSecretReference, radroots_storage::private_artifact::RetentionPolicy, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::protected_size_bytes(&self) -> u64
+pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::resealed(&self, &radroots_storage::private_artifact::PrivateArtifactResealRequest) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::retention(&self) -> radroots_storage::private_artifact::RetentionPolicy
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::revision(&self) -> radroots_storage::private_artifact::PrivateArtifactRevision
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::schema_id(&self) -> &radroots_storage::private_artifact::ArtifactSchemaId
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::secret_reference(&self) -> &radroots_storage::private_artifact::DurableSecretReference
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::stage(&self) -> radroots_storage::private_artifact::PrivateArtifactStage
+pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::tombstone_record(&self) -> core::option::Option<radroots_storage::private_artifact::ArtifactTombstone>
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::updated_at_unix_ms(&self) -> u64
+pub struct radroots_storage::private_artifact::PrivateArtifactResealId(_)
+impl radroots_storage::private_artifact::PrivateArtifactResealId
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+impl core::fmt::Debug for radroots_storage::private_artifact::PrivateArtifactResealId
+pub fn radroots_storage::private_artifact::PrivateArtifactResealId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_storage::private_artifact::PrivateArtifactResealReceipt
+impl radroots_storage::private_artifact::PrivateArtifactResealReceipt
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealReceipt::artifact_id(self) -> radroots_storage::private_artifact::PrivateArtifactId
+pub fn radroots_storage::private_artifact::PrivateArtifactResealReceipt::committed(&radroots_storage::private_artifact::PrivateArtifactResealRequest, radroots_storage::private_artifact::PrivateArtifactRevision) -> Self
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealReceipt::committed_revision(self) -> radroots_storage::private_artifact::PrivateArtifactRevision
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealReceipt::disposition(self) -> radroots_storage::private_artifact::PrivateArtifactResealDisposition
+pub fn radroots_storage::private_artifact::PrivateArtifactResealReceipt::replay(&self, &radroots_storage::private_artifact::PrivateArtifactResealRequest) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealReceipt::request_fingerprint(self) -> [u8; 32]
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealReceipt::reseal_id(self) -> radroots_storage::private_artifact::PrivateArtifactResealId
+impl core::fmt::Debug for radroots_storage::private_artifact::PrivateArtifactResealReceipt
+pub fn radroots_storage::private_artifact::PrivateArtifactResealReceipt::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_storage::private_artifact::PrivateArtifactResealRequest
+impl radroots_storage::private_artifact::PrivateArtifactResealRequest
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealRequest::artifact_id(&self) -> radroots_storage::private_artifact::PrivateArtifactId
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealRequest::committed_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealRequest::expected_commitment(&self) -> radroots_storage::private_artifact::ArtifactCommitment
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealRequest::expected_revision(&self) -> radroots_storage::private_artifact::PrivateArtifactRevision
+pub fn radroots_storage::private_artifact::PrivateArtifactResealRequest::fingerprint(&self) -> [u8; 32]
+pub fn radroots_storage::private_artifact::PrivateArtifactResealRequest::new(radroots_storage::private_artifact::PrivateArtifactResealId, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, radroots_storage::private_artifact::ArtifactCommitment, radroots_storage::private_artifact::ArtifactCommitment, u64, radroots_storage::private_artifact::DurableSecretReference, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealRequest::next_commitment(&self) -> radroots_storage::private_artifact::ArtifactCommitment
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealRequest::next_protected_size_bytes(&self) -> u64
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealRequest::next_secret_reference(&self) -> &radroots_storage::private_artifact::DurableSecretReference
+pub const fn radroots_storage::private_artifact::PrivateArtifactResealRequest::reseal_id(&self) -> radroots_storage::private_artifact::PrivateArtifactResealId
+impl core::fmt::Debug for radroots_storage::private_artifact::PrivateArtifactResealRequest
+pub fn radroots_storage::private_artifact::PrivateArtifactResealRequest::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_storage::private_artifact::PrivateArtifactRevision(_)
+impl radroots_storage::private_artifact::PrivateArtifactRevision
+pub const radroots_storage::private_artifact::PrivateArtifactRevision::INITIAL: Self
+pub const fn radroots_storage::private_artifact::PrivateArtifactRevision::get(self) -> u64
+pub const fn radroots_storage::private_artifact::PrivateArtifactRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::private_artifact::PrivateArtifactStatus
+pub radroots_storage::private_artifact::PrivateArtifactStatus::active: u64
+pub radroots_storage::private_artifact::PrivateArtifactStatus::expired: u64
+pub radroots_storage::private_artifact::PrivateArtifactStatus::tombstoned: u64
+impl radroots_storage::private_artifact::PrivateArtifactStatus
+pub fn radroots_storage::private_artifact::PrivateArtifactStatus::total(self) -> core::option::Option<u64>
+pub struct radroots_storage::private_artifact::RetentionPolicy
+impl radroots_storage::private_artifact::RetentionPolicy
+pub const fn radroots_storage::private_artifact::RetentionPolicy::delete_not_before_unix_ms(self) -> core::option::Option<u64>
+pub const fn radroots_storage::private_artifact::RetentionPolicy::expires_at_unix_ms(self) -> core::option::Option<u64>
+pub const fn radroots_storage::private_artifact::RetentionPolicy::indefinite() -> Self
+pub const fn radroots_storage::private_artifact::RetentionPolicy::is_expired_at(self, u64) -> bool
+pub const fn radroots_storage::private_artifact::RetentionPolicy::new(core::option::Option<u64>, core::option::Option<u64>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::private_artifact::RetentionPolicy::permits_deletion_at(self, u64) -> bool
+pub const radroots_storage::private_artifact::ARTIFACT_KIND_MAX_BYTES: usize
+pub const radroots_storage::private_artifact::ARTIFACT_SCHEMA_MAX_BYTES: usize
+pub const radroots_storage::private_artifact::EXPIRED_ARTIFACT_QUERY_LIMIT_MAX: u16
+pub const radroots_storage::private_artifact::PRIVATE_ARTIFACT_ENVELOPE_PURPOSE_PREFIX: &str
+pub const radroots_storage::private_artifact::PRIVATE_ARTIFACT_ENVELOPE_SUBJECT_TYPE: &str
+pub const radroots_storage::private_artifact::SECRET_PROVIDER_MAX_BYTES: usize
+pub const radroots_storage::private_artifact::SECRET_REFERENCE_MAX_BYTES: usize
+pub trait radroots_storage::private_artifact::PrivateArtifactStore: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::expired(&self, u64, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::metadata(&self, radroots_storage::private_artifact::PrivateArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::put_metadata(&self, radroots_storage::private_artifact::PrivateArtifactMetadata) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::reseal_metadata(&self, radroots_storage::private_artifact::PrivateArtifactResealRequest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactResealReceipt, radroots_storage::Error>>
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactStatus, radroots_storage::Error>>
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+impl radroots_storage::private_artifact::PrivateArtifactStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::expired(&self, u64, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::metadata(&self, radroots_storage::private_artifact::PrivateArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_metadata(&self, radroots_storage::private_artifact::PrivateArtifactMetadata) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::reseal_metadata(&self, radroots_storage::private_artifact::PrivateArtifactResealRequest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactResealReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub mod radroots_storage::projection
+pub use radroots_storage::projection::BoxFuture
+pub use radroots_storage::projection::EventId
+pub enum radroots_storage::projection::InvalidationReason
+pub radroots_storage::projection::InvalidationReason::EventIndexManifestChanged
+pub radroots_storage::projection::InvalidationReason::IntegrityFailure
+pub radroots_storage::projection::InvalidationReason::OperatorRequested
+pub radroots_storage::projection::InvalidationReason::ProjectionGenerationChanged
+pub radroots_storage::projection::InvalidationReason::SourceGenerationChanged
+pub enum radroots_storage::projection::ProjectionHealth
+pub radroots_storage::projection::ProjectionHealth::Failed
+pub radroots_storage::projection::ProjectionHealth::Invalidated
+pub radroots_storage::projection::ProjectionHealth::Ready
+pub radroots_storage::projection::ProjectionHealth::Rebuilding
+pub enum radroots_storage::projection::RebuildFailure
+pub radroots_storage::projection::RebuildFailure::IntegrityFailure
+pub radroots_storage::projection::RebuildFailure::PromotionRejected
+pub radroots_storage::projection::RebuildFailure::ReducerRejected
+pub radroots_storage::projection::RebuildFailure::SourceChanged
+pub enum radroots_storage::projection::RebuildStage
+pub radroots_storage::projection::RebuildStage::Completed
+pub radroots_storage::projection::RebuildStage::Failed
+pub radroots_storage::projection::RebuildStage::Requested
+pub radroots_storage::projection::RebuildStage::Running
+pub struct radroots_storage::projection::ArtifactDigest(_)
+impl radroots_storage::projection::ArtifactDigest
+pub const fn radroots_storage::projection::ArtifactDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::projection::ArtifactDigest::new([u8; 32]) -> Self
+pub struct radroots_storage::projection::EventIdRange
+impl radroots_storage::projection::EventIdRange
+pub const fn radroots_storage::projection::EventIdRange::first(&self) -> &radroots_event::id::EventId
+pub const fn radroots_storage::projection::EventIdRange::last(&self) -> &radroots_event::id::EventId
+pub fn radroots_storage::projection::EventIdRange::new(radroots_event::id::EventId, radroots_event::id::EventId) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::EventIndexCheckpoint
+impl radroots_storage::projection::EventIndexCheckpoint
+pub const fn radroots_storage::projection::EventIndexCheckpoint::generated_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::projection::EventIndexCheckpoint::generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub fn radroots_storage::projection::EventIndexCheckpoint::new(radroots_storage::projection::ProjectionGeneration, u64, alloc::vec::Vec<radroots_storage::projection::EventIndexShardCheckpoint>) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::projection::EventIndexCheckpoint::shard(&self, &radroots_storage::projection::EventIndexShardId) -> core::option::Option<&radroots_storage::projection::EventIndexShardCheckpoint>
+pub fn radroots_storage::projection::EventIndexCheckpoint::shards(&self) -> &[radroots_storage::projection::EventIndexShardCheckpoint]
+pub struct radroots_storage::projection::EventIndexManifest
+impl radroots_storage::projection::EventIndexManifest
+pub const fn radroots_storage::projection::EventIndexManifest::first_published_at_unix_s(&self) -> u64
+pub const fn radroots_storage::projection::EventIndexManifest::generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub const fn radroots_storage::projection::EventIndexManifest::last_published_at_unix_s(&self) -> u64
+pub fn radroots_storage::projection::EventIndexManifest::new(radroots_storage::projection::ProjectionGeneration, u64, u32, u64, u64, alloc::vec::Vec<radroots_storage::projection::EventIndexShard>) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::projection::EventIndexManifest::shards(&self) -> &[radroots_storage::projection::EventIndexShard]
+pub const fn radroots_storage::projection::EventIndexManifest::target_shard_size(&self) -> u32
+pub const fn radroots_storage::projection::EventIndexManifest::total_events(&self) -> u64
+pub struct radroots_storage::projection::EventIndexShard
+impl radroots_storage::projection::EventIndexShard
+pub fn radroots_storage::projection::EventIndexShard::artifact_path(&self) -> &str
+pub const fn radroots_storage::projection::EventIndexShard::event_count(&self) -> u32
+pub const fn radroots_storage::projection::EventIndexShard::event_ids(&self) -> &radroots_storage::projection::EventIdRange
+pub const fn radroots_storage::projection::EventIndexShard::first_published_at_unix_s(&self) -> u64
+pub const fn radroots_storage::projection::EventIndexShard::last_published_at_unix_s(&self) -> u64
+pub fn radroots_storage::projection::EventIndexShard::new(radroots_storage::projection::EventIndexShardId, impl core::convert::Into<alloc::string::String>, u32, radroots_storage::projection::EventIdRange, u64, u64, radroots_storage::projection::ArtifactDigest) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::EventIndexShard::sha256(&self) -> radroots_storage::projection::ArtifactDigest
+pub const fn radroots_storage::projection::EventIndexShard::shard_id(&self) -> &radroots_storage::projection::EventIndexShardId
+pub struct radroots_storage::projection::EventIndexShardCheckpoint
+impl radroots_storage::projection::EventIndexShardCheckpoint
+pub fn radroots_storage::projection::EventIndexShardCheckpoint::cursor(&self) -> core::option::Option<&str>
+pub const fn radroots_storage::projection::EventIndexShardCheckpoint::last_created_at_unix_s(&self) -> u64
+pub const fn radroots_storage::projection::EventIndexShardCheckpoint::last_event_id(&self) -> core::option::Option<&radroots_event::id::EventId>
+pub fn radroots_storage::projection::EventIndexShardCheckpoint::new(radroots_storage::projection::EventIndexShardId, u64, core::option::Option<radroots_event::id::EventId>, core::option::Option<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::EventIndexShardCheckpoint::shard_id(&self) -> &radroots_storage::projection::EventIndexShardId
+pub struct radroots_storage::projection::EventIndexShardId(_)
+impl radroots_storage::projection::EventIndexShardId
+pub fn radroots_storage::projection::EventIndexShardId::as_str(&self) -> &str
+pub fn radroots_storage::projection::EventIndexShardId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::ProjectionCheckpoint
+impl radroots_storage::projection::ProjectionCheckpoint
+pub fn radroots_storage::projection::ProjectionCheckpoint::advances(&self, &Self) -> bool
+pub const fn radroots_storage::projection::ProjectionCheckpoint::generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub fn radroots_storage::projection::ProjectionCheckpoint::new(radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration, core::option::Option<radroots_storage::event::EventPosition>, u64, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::ProjectionCheckpoint::projected_rows(&self) -> u64
+pub const fn radroots_storage::projection::ProjectionCheckpoint::projection_id(&self) -> &radroots_storage::projection::ProjectionId
+pub const fn radroots_storage::projection::ProjectionCheckpoint::source_position(&self) -> core::option::Option<radroots_storage::event::EventPosition>
+pub const fn radroots_storage::projection::ProjectionCheckpoint::updated_at_unix_ms(&self) -> u64
+pub struct radroots_storage::projection::ProjectionGeneration(_)
+impl radroots_storage::projection::ProjectionGeneration
+pub const fn radroots_storage::projection::ProjectionGeneration::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::projection::ProjectionGeneration::new([u8; 32]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::ProjectionId(_)
+impl radroots_storage::projection::ProjectionId
+pub fn radroots_storage::projection::ProjectionId::as_str(&self) -> &str
+pub fn radroots_storage::projection::ProjectionId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::ProjectionInvalidation
+impl radroots_storage::projection::ProjectionInvalidation
+pub const fn radroots_storage::projection::ProjectionInvalidation::invalid_generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub const fn radroots_storage::projection::ProjectionInvalidation::invalidated_at_unix_ms(&self) -> u64
+pub fn radroots_storage::projection::ProjectionInvalidation::new(radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration, radroots_storage::projection::ProjectionGeneration, radroots_storage::projection::InvalidationReason, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::ProjectionInvalidation::projection_id(&self) -> &radroots_storage::projection::ProjectionId
+pub const fn radroots_storage::projection::ProjectionInvalidation::reason(&self) -> radroots_storage::projection::InvalidationReason
+pub const fn radroots_storage::projection::ProjectionInvalidation::replacement_generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub struct radroots_storage::projection::ProjectionRevision(_)
+impl radroots_storage::projection::ProjectionRevision
+pub const radroots_storage::projection::ProjectionRevision::INITIAL: Self
+pub const fn radroots_storage::projection::ProjectionRevision::get(self) -> u64
+pub const fn radroots_storage::projection::ProjectionRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::ProjectionStatus
+impl radroots_storage::projection::ProjectionStatus
+pub const fn radroots_storage::projection::ProjectionStatus::active_rebuild(&self) -> core::option::Option<radroots_storage::projection::RebuildTicketId>
+pub const fn radroots_storage::projection::ProjectionStatus::checkpoint(&self) -> core::option::Option<&radroots_storage::projection::ProjectionCheckpoint>
+pub const fn radroots_storage::projection::ProjectionStatus::generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub const fn radroots_storage::projection::ProjectionStatus::health(&self) -> radroots_storage::projection::ProjectionHealth
+pub fn radroots_storage::projection::ProjectionStatus::new(radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration, radroots_storage::projection::ProjectionHealth, core::option::Option<radroots_storage::projection::ProjectionCheckpoint>, core::option::Option<radroots_storage::projection::RebuildTicketId>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::ProjectionStatus::projection_id(&self) -> &radroots_storage::projection::ProjectionId
+pub struct radroots_storage::projection::RawSourceDigest(_)
+impl radroots_storage::projection::RawSourceDigest
+pub const fn radroots_storage::projection::RawSourceDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::projection::RawSourceDigest::new([u8; 32]) -> Self
+pub struct radroots_storage::projection::RebuildTicket
+impl radroots_storage::projection::RebuildTicket
+pub const fn radroots_storage::projection::RebuildTicket::checkpoint(&self) -> core::option::Option<&radroots_storage::projection::ProjectionCheckpoint>
+pub const fn radroots_storage::projection::RebuildTicket::failure(&self) -> core::option::Option<radroots_storage::projection::RebuildFailure>
+pub fn radroots_storage::projection::RebuildTicket::from_durable_parts(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionInvalidation, radroots_storage::projection::ProjectionRevision, radroots_storage::projection::RebuildStage, radroots_storage::event::SourceGeneration, core::option::Option<radroots_storage::event::EventPosition>, radroots_storage::projection::RawSourceDigest, core::option::Option<radroots_storage::projection::ProjectionCheckpoint>, core::option::Option<radroots_storage::projection::RebuildFailure>, u64, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::RebuildTicket::invalidation(&self) -> &radroots_storage::projection::ProjectionInvalidation
+pub fn radroots_storage::projection::RebuildTicket::requested(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionInvalidation, radroots_storage::event::SourceGeneration, core::option::Option<radroots_storage::event::EventPosition>, radroots_storage::projection::RawSourceDigest) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::RebuildTicket::requested_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::projection::RebuildTicket::revision(&self) -> radroots_storage::projection::ProjectionRevision
+pub const fn radroots_storage::projection::RebuildTicket::source_digest(&self) -> radroots_storage::projection::RawSourceDigest
+pub const fn radroots_storage::projection::RebuildTicket::source_generation(&self) -> radroots_storage::event::SourceGeneration
+pub const fn radroots_storage::projection::RebuildTicket::source_high_water(&self) -> core::option::Option<radroots_storage::event::EventPosition>
+pub const fn radroots_storage::projection::RebuildTicket::stage(&self) -> radroots_storage::projection::RebuildStage
+pub const fn radroots_storage::projection::RebuildTicket::ticket_id(&self) -> radroots_storage::projection::RebuildTicketId
+pub fn radroots_storage::projection::RebuildTicket::transition(&self, radroots_storage::projection::RebuildTransition) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::RebuildTicket::updated_at_unix_ms(&self) -> u64
+pub struct radroots_storage::projection::RebuildTicketId(_)
+impl radroots_storage::projection::RebuildTicketId
+pub const fn radroots_storage::projection::RebuildTicketId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::projection::RebuildTicketId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::RebuildTransition
+impl radroots_storage::projection::RebuildTransition
+pub const fn radroots_storage::projection::RebuildTransition::checkpoint(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64, radroots_storage::projection::ProjectionCheckpoint) -> Self
+pub const fn radroots_storage::projection::RebuildTransition::complete(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64, radroots_storage::projection::ProjectionCheckpoint) -> Self
+pub const fn radroots_storage::projection::RebuildTransition::fail(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64, radroots_storage::projection::RebuildFailure) -> Self
+pub const fn radroots_storage::projection::RebuildTransition::start(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64) -> Self
+pub const fn radroots_storage::projection::RebuildTransition::ticket_id(&self) -> radroots_storage::projection::RebuildTicketId
+pub const radroots_storage::projection::EVENT_INDEX_ARTIFACT_PATH_MAX_BYTES: usize
+pub const radroots_storage::projection::EVENT_INDEX_CURSOR_MAX_BYTES: usize
+pub const radroots_storage::projection::EVENT_INDEX_SHARDS_MAX: usize
+pub const radroots_storage::projection::EVENT_INDEX_SHARD_ID_MAX_BYTES: usize
+pub const radroots_storage::projection::PROJECTION_ID_MAX_BYTES: usize
+pub trait radroots_storage::projection::ProjectionStore: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::projection::ProjectionStore::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::invalidation(&self, radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionInvalidation>, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::rebuild(&self, radroots_storage::projection::RebuildTicketId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::RebuildTicket>, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+impl radroots_storage::projection::ProjectionStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::invalidation(&self, radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionInvalidation>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::rebuild(&self, radroots_storage::projection::RebuildTicketId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::RebuildTicket>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub mod radroots_storage::status
+pub enum radroots_storage::status::EventStoreHealth
+pub radroots_storage::status::EventStoreHealth::Available
+pub radroots_storage::status::EventStoreHealth::Degraded
+pub radroots_storage::status::EventStoreHealth::Unavailable
+pub enum radroots_storage::status::EventStoreMode
+pub radroots_storage::status::EventStoreMode::ReadOnly
+pub radroots_storage::status::EventStoreMode::ReadWrite
+pub enum radroots_storage::status::IntegrityHealth
+pub radroots_storage::status::IntegrityHealth::Corrupt
+pub radroots_storage::status::IntegrityHealth::Degraded
+pub radroots_storage::status::IntegrityHealth::Healthy
+pub radroots_storage::status::IntegrityHealth::Unknown
+pub enum radroots_storage::status::ShutdownState
+pub radroots_storage::status::ShutdownState::Closed
+pub radroots_storage::status::ShutdownState::Closing
+pub radroots_storage::status::ShutdownState::Open
+pub enum radroots_storage::status::StorageBackend
+pub radroots_storage::status::StorageBackend::Memory
+pub radroots_storage::status::StorageBackend::Sqlite
+pub enum radroots_storage::status::StorageOpenMode
+pub radroots_storage::status::StorageOpenMode::Create
+pub radroots_storage::status::StorageOpenMode::ReadOnly
+pub radroots_storage::status::StorageOpenMode::ReadWriteExisting
+pub enum radroots_storage::status::WriterPolicy
+pub radroots_storage::status::WriterPolicy::AdvisoryProcessLock
+pub radroots_storage::status::WriterPolicy::NoWriter
+pub struct radroots_storage::status::EventStoreStatus
+impl radroots_storage::status::EventStoreStatus
+pub const fn radroots_storage::status::EventStoreStatus::generation(&self) -> radroots_storage::event::SourceGeneration
+pub const fn radroots_storage::status::EventStoreStatus::health(&self) -> radroots_storage::status::EventStoreHealth
+pub const fn radroots_storage::status::EventStoreStatus::mode(&self) -> radroots_storage::status::EventStoreMode
+pub const fn radroots_storage::status::EventStoreStatus::new(radroots_storage::event::SourceGeneration, radroots_storage::status::EventStoreMode, radroots_storage::status::EventStoreHealth, u64, u64, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::status::EventStoreStatus::raw_events(&self) -> u64
+pub const fn radroots_storage::status::EventStoreStatus::verified_events(&self) -> u64
+pub const fn radroots_storage::status::EventStoreStatus::visible_events(&self) -> u64
+pub struct radroots_storage::status::IntegrityStatus
+impl radroots_storage::status::IntegrityStatus
+pub const fn radroots_storage::status::IntegrityStatus::checked_at_unix_ms(self) -> core::option::Option<u64>
+pub const fn radroots_storage::status::IntegrityStatus::failed_members(self) -> u32
+pub const fn radroots_storage::status::IntegrityStatus::health(self) -> radroots_storage::status::IntegrityHealth
+pub fn radroots_storage::status::IntegrityStatus::new(radroots_storage::status::IntegrityHealth, core::option::Option<u64>, u32, u32) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::status::IntegrityStatus::verified_members(self) -> u32
+pub struct radroots_storage::status::StorageStatus
+impl radroots_storage::status::StorageStatus
+pub const fn radroots_storage::status::StorageStatus::backend(self) -> radroots_storage::status::StorageBackend
+pub const fn radroots_storage::status::StorageStatus::busy_timeout_ms(self) -> u32
+pub const fn radroots_storage::status::StorageStatus::integrity(self) -> radroots_storage::status::IntegrityStatus
+pub fn radroots_storage::status::StorageStatus::new(radroots_storage::status::StorageBackend, radroots_storage::status::StorageOpenMode, radroots_storage::status::WriterPolicy, radroots_storage::status::ShutdownState, radroots_storage::status::IntegrityStatus, bool, u32) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::status::StorageStatus::open_mode(self) -> radroots_storage::status::StorageOpenMode
+pub const fn radroots_storage::status::StorageStatus::shutdown(self) -> radroots_storage::status::ShutdownState
+pub const fn radroots_storage::status::StorageStatus::wal_enabled(self) -> bool
+pub const fn radroots_storage::status::StorageStatus::writer_policy(self) -> radroots_storage::status::WriterPolicy
+pub trait radroots_storage::status::StorageStatusProvider: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::status::StorageStatusProvider::storage_status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+impl radroots_storage::status::StorageStatusProvider for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::storage_status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+#[non_exhaustive] pub enum radroots_storage::Error
+pub radroots_storage::Error::AdmissionEventMismatch
+pub radroots_storage::Error::AdmissionRegression
+pub radroots_storage::Error::AtomicCommitConflict
+pub radroots_storage::Error::AtomicCommitFailed
+pub radroots_storage::Error::AtomicWorkflowMismatch
+pub radroots_storage::Error::BackendUnavailable
+pub radroots_storage::Error::BackupManifestPlanMismatch
+pub radroots_storage::Error::BackupSecretPolicyViolation
+pub radroots_storage::Error::CorruptJournalRecord
+pub radroots_storage::Error::CorruptOutboxRecord
+pub radroots_storage::Error::CorruptPrivateArtifactMetadata
+pub radroots_storage::Error::CorruptProjectionRecord
+pub radroots_storage::Error::CorruptReliabilityOperation
+pub radroots_storage::Error::CorruptStoredEvent
+pub radroots_storage::Error::CursorGenerationMismatch
+pub radroots_storage::Error::DeliveryAttemptOverflow
+pub radroots_storage::Error::DeliveryPlanClaimConflict
+pub radroots_storage::Error::DuplicateBackupMember
+pub radroots_storage::Error::DuplicateEventIndexShard
+pub radroots_storage::Error::DuplicateEventQueryId
+pub radroots_storage::Error::EmptyEventQueryIds
+pub radroots_storage::Error::EventConflict
+pub radroots_storage::Error::EventNotFound
+pub radroots_storage::Error::EventPageLimitExceeded
+pub radroots_storage::Error::IdempotencyConflict
+pub radroots_storage::Error::InvalidAtomicCommitId
+pub radroots_storage::Error::InvalidAtomicCommitTimestamp
+pub radroots_storage::Error::InvalidAuthoredArtifact
+pub radroots_storage::Error::InvalidAuthoredDeliveryPlan
+pub radroots_storage::Error::InvalidAuthoredOperation
+pub radroots_storage::Error::InvalidAuthoredTransition
+pub radroots_storage::Error::InvalidBackupId
+pub radroots_storage::Error::InvalidBackupManifest
+pub radroots_storage::Error::InvalidBackupMemberLength
+pub radroots_storage::Error::InvalidBackupMemberPath
+pub radroots_storage::Error::InvalidBackupTimestamp
+pub radroots_storage::Error::InvalidBackupTransition
+pub radroots_storage::Error::InvalidBackupVersion
+pub radroots_storage::Error::InvalidDeliveryAttempt
+pub radroots_storage::Error::InvalidDeliveryEvidence
+pub radroots_storage::Error::InvalidEventIndexArtifactPath
+pub radroots_storage::Error::InvalidEventIndexCheckpoint
+pub radroots_storage::Error::InvalidEventIndexCursor
+pub radroots_storage::Error::InvalidEventIndexManifest
+pub radroots_storage::Error::InvalidEventIndexRange
+pub radroots_storage::Error::InvalidEventIndexShardCount
+pub radroots_storage::Error::InvalidEventIndexShardId
+pub radroots_storage::Error::InvalidEventIndexTimestamp
+pub radroots_storage::Error::InvalidEventQueryLimit
+pub radroots_storage::Error::InvalidEventSequence
+pub radroots_storage::Error::InvalidExpiredArtifactQueryLimit
+pub radroots_storage::Error::InvalidIdempotencyKey
+pub radroots_storage::Error::InvalidIntegrityStatus
+pub radroots_storage::Error::InvalidJournalQueryLimit
+pub radroots_storage::Error::InvalidJournalRevision
+pub radroots_storage::Error::InvalidJournalTransition
+pub radroots_storage::Error::InvalidOperationInstanceId
+pub radroots_storage::Error::InvalidOperationTimestamp
+pub radroots_storage::Error::InvalidOutboxClaimLimit
+pub radroots_storage::Error::InvalidOutboxItemId
+pub radroots_storage::Error::InvalidOutboxLease
+pub radroots_storage::Error::InvalidOutboxLeaseOwner
+pub radroots_storage::Error::InvalidOutboxRevision
+pub radroots_storage::Error::InvalidOutboxTimestamp
+pub radroots_storage::Error::InvalidPrivateArtifactId
+pub radroots_storage::Error::InvalidPrivateArtifactKind
+pub radroots_storage::Error::InvalidPrivateArtifactMetadata
+pub radroots_storage::Error::InvalidPrivateArtifactResealId
+pub radroots_storage::Error::InvalidPrivateArtifactResealRequest
+pub radroots_storage::Error::InvalidPrivateArtifactRetention
+pub radroots_storage::Error::InvalidPrivateArtifactRevision
+pub radroots_storage::Error::InvalidPrivateArtifactSchema
+pub radroots_storage::Error::InvalidPrivateArtifactSecretReference
+pub radroots_storage::Error::InvalidPrivateArtifactTimestamp
+pub radroots_storage::Error::InvalidProjectionGeneration
+pub radroots_storage::Error::InvalidProjectionId
+pub radroots_storage::Error::InvalidProjectionInvalidation
+pub radroots_storage::Error::InvalidProjectionRevision
+pub radroots_storage::Error::InvalidProjectionTimestamp
+pub radroots_storage::Error::InvalidRebuildTicketId
+pub radroots_storage::Error::InvalidRebuildTransition
+pub radroots_storage::Error::InvalidRecoveryAttempt
+pub radroots_storage::Error::InvalidRecoveryDeadline
+pub radroots_storage::Error::InvalidReliabilityRevision
+pub radroots_storage::Error::InvalidRestoreTimestamp
+pub radroots_storage::Error::InvalidRestoreTransition
+pub radroots_storage::Error::InvalidRetrySchedule
+pub radroots_storage::Error::InvalidSourceGeneration
+pub radroots_storage::Error::InvalidStorageStatus
+pub radroots_storage::Error::InvalidWorkClaim
+pub radroots_storage::Error::InvalidWorkFailure
+pub radroots_storage::Error::JournalOperationCommitted
+pub radroots_storage::Error::JournalRevisionConflict
+pub radroots_storage::Error::OperationIdentityMismatch
+pub radroots_storage::Error::OperationNotFound
+pub radroots_storage::Error::OutboxItemNotFound
+pub radroots_storage::Error::OutboxItemNotReady
+pub radroots_storage::Error::OutboxItemTerminal
+pub radroots_storage::Error::OutboxLeaseConflict
+pub radroots_storage::Error::OutboxLeaseExpired
+pub radroots_storage::Error::OutboxPlanConflict
+pub radroots_storage::Error::OutboxRevisionConflict
+pub radroots_storage::Error::PrivateArtifactConflict
+pub radroots_storage::Error::PrivateArtifactNotExpired
+pub radroots_storage::Error::PrivateArtifactNotFound
+pub radroots_storage::Error::PrivateArtifactPersistenceIndeterminate
+pub radroots_storage::Error::PrivateArtifactResealConflict
+pub radroots_storage::Error::PrivateArtifactRetentionActive
+pub radroots_storage::Error::PrivateArtifactRevisionConflict
+pub radroots_storage::Error::PrivateArtifactTombstoned
+pub radroots_storage::Error::ProjectionCheckpointMismatch
+pub radroots_storage::Error::ProjectionCheckpointRegression
+pub radroots_storage::Error::ProjectionRevisionConflict
+pub radroots_storage::Error::RebuildTicketTerminal
+pub radroots_storage::Error::ReliabilityOperationTerminal
+pub radroots_storage::Error::ReliabilityRevisionConflict
+pub radroots_storage::Error::RestoreMemberVerificationFailed
+pub radroots_storage::Error::SourceGenerationChanged
+pub radroots_storage::Error::TooManyEventQueryIds
+impl core::error::Error for radroots_storage::Error
+impl core::fmt::Display for radroots_storage::Error
+pub fn radroots_storage::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_storage::StorageStatus
+impl radroots_storage::status::StorageStatus
+pub const fn radroots_storage::status::StorageStatus::backend(self) -> radroots_storage::status::StorageBackend
+pub const fn radroots_storage::status::StorageStatus::busy_timeout_ms(self) -> u32
+pub const fn radroots_storage::status::StorageStatus::integrity(self) -> radroots_storage::status::IntegrityStatus
+pub fn radroots_storage::status::StorageStatus::new(radroots_storage::status::StorageBackend, radroots_storage::status::StorageOpenMode, radroots_storage::status::WriterPolicy, radroots_storage::status::ShutdownState, radroots_storage::status::IntegrityStatus, bool, u32) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::status::StorageStatus::open_mode(self) -> radroots_storage::status::StorageOpenMode
+pub const fn radroots_storage::status::StorageStatus::shutdown(self) -> radroots_storage::status::ShutdownState
+pub const fn radroots_storage::status::StorageStatus::wal_enabled(self) -> bool
+pub const fn radroots_storage::status::StorageStatus::writer_policy(self) -> radroots_storage::status::WriterPolicy
+pub trait radroots_storage::BackupSource: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::BackupSource::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+impl radroots_storage::backup::StorageReliability for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub trait radroots_storage::EventStore: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::EventStore::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>>
+pub fn radroots_storage::EventStore::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>>
+pub fn radroots_storage::EventStore::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>>
+pub fn radroots_storage::EventStore::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>>
+pub fn radroots_storage::EventStore::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>>
+pub fn radroots_storage::EventStore::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>>
+impl radroots_storage::event::EventStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>>
+pub trait radroots_storage::Journal: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::Journal::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::Journal::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::Journal::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>>
+pub fn radroots_storage::Journal::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::Journal::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>>
+impl radroots_storage::journal::Journal for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>>
+pub trait radroots_storage::Outbox: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::Outbox::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>>
+pub fn radroots_storage::Outbox::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>>
+pub fn radroots_storage::Outbox::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>>
+pub fn radroots_storage::Outbox::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::Outbox::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::Outbox::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>>
+impl radroots_storage::outbox::Outbox for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>>
+pub trait radroots_storage::ProjectionStore: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::ProjectionStore::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::invalidation(&self, radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionInvalidation>, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::rebuild(&self, radroots_storage::projection::RebuildTicketId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::RebuildTicket>, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+impl radroots_storage::projection::ProjectionStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::invalidation(&self, radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionInvalidation>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::rebuild(&self, radroots_storage::projection::RebuildTicketId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::RebuildTicket>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub trait radroots_storage::Storage: radroots_storage::event::EventStore + radroots_storage::journal::Journal + radroots_storage::outbox::Outbox + radroots_storage::projection::ProjectionStore + radroots_storage::private_artifact::PrivateArtifactStore + radroots_storage::backup::StorageReliability + radroots_storage::atomic::AtomicStorage + radroots_storage::authored_atomic::AuthoredAtomicStorage
+impl<T> radroots_storage::Storage for T where T: radroots_storage::event::EventStore + radroots_storage::journal::Journal + radroots_storage::outbox::Outbox + radroots_storage::projection::ProjectionStore + radroots_storage::private_artifact::PrivateArtifactStore + radroots_storage::backup::StorageReliability + radroots_storage::atomic::AtomicStorage + radroots_storage::authored_atomic::AuthoredAtomicStorage
diff --git a/contracts/api_baselines/radroots_trade.txt b/contracts/api_baselines/radroots_trade.txt
@@ -0,0 +1,354 @@
+pub mod radroots_trade
+pub mod radroots_trade::evidence
+pub enum radroots_trade::evidence::RadrootsTradeAttestationResultV1
+pub radroots_trade::evidence::RadrootsTradeAttestationResultV1::Invalid
+pub radroots_trade::evidence::RadrootsTradeAttestationResultV1::Valid
+pub enum radroots_trade::evidence::RadrootsTradeEvidenceStateV1
+pub radroots_trade::evidence::RadrootsTradeEvidenceStateV1::Complete
+pub radroots_trade::evidence::RadrootsTradeEvidenceStateV1::Missing
+pub radroots_trade::evidence::RadrootsTradeEvidenceStateV1::QueryPartial
+pub radroots_trade::evidence::RadrootsTradeEvidenceStateV1::UnsupportedVersion
+pub struct radroots_trade::evidence::RadrootsTradeAttestationRecordV1
+impl radroots_trade::evidence::RadrootsTradeAttestationRecordV1
+pub const fn radroots_trade::evidence::RadrootsTradeAttestationRecordV1::claim_mutation_id(&self) -> &radroots_event::id::MutationId
+pub const fn radroots_trade::evidence::RadrootsTradeAttestationRecordV1::event_id(&self) -> &radroots_event::id::EventId
+pub const fn radroots_trade::evidence::RadrootsTradeAttestationRecordV1::new(radroots_event::id::EventId, radroots_event::id::MutationId, radroots_trade::evidence::RadrootsTradeAttestationResultV1) -> Self
+pub const fn radroots_trade::evidence::RadrootsTradeAttestationRecordV1::result(&self) -> radroots_trade::evidence::RadrootsTradeAttestationResultV1
+pub struct radroots_trade::evidence::RadrootsTradeMutationRecordV1
+impl radroots_trade::evidence::RadrootsTradeMutationRecordV1
+pub const fn radroots_trade::evidence::RadrootsTradeMutationRecordV1::mutation(&self) -> &radroots_event::trade::TradeMutationEnvelopeV1
+pub const fn radroots_trade::evidence::RadrootsTradeMutationRecordV1::new(core::option::Option<radroots_event::id::EventId>, radroots_event::trade::TradeMutationEnvelopeV1) -> Self
+pub const fn radroots_trade::evidence::RadrootsTradeMutationRecordV1::transport_event_id(&self) -> core::option::Option<&radroots_event::id::EventId>
+pub struct radroots_trade::evidence::RadrootsTradePrivateTermsEvidenceV1
+impl radroots_trade::evidence::RadrootsTradePrivateTermsEvidenceV1
+pub const fn radroots_trade::evidence::RadrootsTradePrivateTermsEvidenceV1::candidate_id(&self) -> &radroots_event::id::CandidateId
+pub const fn radroots_trade::evidence::RadrootsTradePrivateTermsEvidenceV1::new(radroots_event::id::CandidateId, radroots_trade::model::RadrootsTradePrivateTermsStateV1) -> Self
+pub const fn radroots_trade::evidence::RadrootsTradePrivateTermsEvidenceV1::state(&self) -> radroots_trade::model::RadrootsTradePrivateTermsStateV1
+pub mod radroots_trade::model
+pub enum radroots_trade::model::OrderIdError
+pub radroots_trade::model::OrderIdError::Empty
+pub radroots_trade::model::OrderIdError::InvalidCharacter
+pub radroots_trade::model::OrderIdError::TooLong
+pub radroots_trade::model::OrderIdError::TooLong::actual: usize
+pub radroots_trade::model::OrderIdError::TooLong::max: usize
+impl core::error::Error for radroots_trade::model::OrderIdError
+impl core::fmt::Display for radroots_trade::model::OrderIdError
+pub fn radroots_trade::model::OrderIdError::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub enum radroots_trade::model::RadrootsTradeAgreementStateV1
+pub radroots_trade::model::RadrootsTradeAgreementStateV1::Agreed
+pub radroots_trade::model::RadrootsTradeAgreementStateV1::Cancelled
+pub radroots_trade::model::RadrootsTradeAgreementStateV1::Contested
+pub radroots_trade::model::RadrootsTradeAgreementStateV1::None
+pub enum radroots_trade::model::RadrootsTradeAttestationStateV1
+pub radroots_trade::model::RadrootsTradeAttestationStateV1::Conflicting
+pub radroots_trade::model::RadrootsTradeAttestationStateV1::None
+pub radroots_trade::model::RadrootsTradeAttestationStateV1::PresentInvalid
+pub radroots_trade::model::RadrootsTradeAttestationStateV1::PresentValid
+pub enum radroots_trade::model::RadrootsTradeConflictStateV1
+pub radroots_trade::model::RadrootsTradeConflictStateV1::CancellationConflict
+pub radroots_trade::model::RadrootsTradeConflictStateV1::ConcurrentCandidates
+pub radroots_trade::model::RadrootsTradeConflictStateV1::DecisionConflict
+pub radroots_trade::model::RadrootsTradeConflictStateV1::DoubleAcceptance
+pub radroots_trade::model::RadrootsTradeConflictStateV1::InvalidCausalChain
+pub radroots_trade::model::RadrootsTradeConflictStateV1::InventoryAuthorityConflict
+pub radroots_trade::model::RadrootsTradeConflictStateV1::None
+pub enum radroots_trade::model::RadrootsTradeFulfillmentStateV1
+pub radroots_trade::model::RadrootsTradeFulfillmentStateV1::NotStarted
+pub enum radroots_trade::model::RadrootsTradeNegotiationStateV1
+pub radroots_trade::model::RadrootsTradeNegotiationStateV1::ClosedDeclined
+pub radroots_trade::model::RadrootsTradeNegotiationStateV1::ClosedExpired
+pub radroots_trade::model::RadrootsTradeNegotiationStateV1::None
+pub radroots_trade::model::RadrootsTradeNegotiationStateV1::Open
+pub enum radroots_trade::model::RadrootsTradePaymentStateV1
+pub radroots_trade::model::RadrootsTradePaymentStateV1::NotTracked
+pub enum radroots_trade::model::RadrootsTradePrivateTermsStateV1
+pub radroots_trade::model::RadrootsTradePrivateTermsStateV1::AvailableVerified
+pub radroots_trade::model::RadrootsTradePrivateTermsStateV1::CommitmentMismatch
+pub radroots_trade::model::RadrootsTradePrivateTermsStateV1::Missing
+pub radroots_trade::model::RadrootsTradePrivateTermsStateV1::NotRequired
+pub radroots_trade::model::RadrootsTradePrivateTermsStateV1::Undecryptable
+pub struct radroots_trade::model::OrderId(_)
+impl radroots_trade::model::OrderId
+pub fn radroots_trade::model::OrderId::as_str(&self) -> &str
+pub fn radroots_trade::model::OrderId::into_string(self) -> alloc::string::String
+pub fn radroots_trade::model::OrderId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_trade::model::OrderIdError>
+impl core::convert::AsRef<str> for radroots_trade::model::OrderId
+pub fn radroots_trade::model::OrderId::as_ref(&self) -> &str
+impl core::convert::From<radroots_trade::model::OrderId> for alloc::string::String
+pub fn alloc::string::String::from(radroots_trade::model::OrderId) -> Self
+impl core::convert::TryFrom<&str> for radroots_trade::model::OrderId
+pub type radroots_trade::model::OrderId::Error = radroots_trade::model::OrderIdError
+pub fn radroots_trade::model::OrderId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_trade::model::OrderId
+pub type radroots_trade::model::OrderId::Error = radroots_trade::model::OrderIdError
+pub fn radroots_trade::model::OrderId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_trade::model::OrderId
+pub fn radroots_trade::model::OrderId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_trade::model::OrderId
+pub type radroots_trade::model::OrderId::Err = radroots_trade::model::OrderIdError
+pub fn radroots_trade::model::OrderId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_trade::model::OrderId
+pub fn radroots_trade::model::OrderId::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_trade::model::OrderId
+pub fn radroots_trade::model::OrderId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_trade::model::RadrootsTradeAgreementClaimV1
+impl radroots_trade::model::RadrootsTradeAgreementClaimV1
+pub const fn radroots_trade::model::RadrootsTradeAgreementClaimV1::accepted_by_pubkey(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_trade::model::RadrootsTradeAgreementClaimV1::candidate_author_pubkey(&self) -> &radroots_identity::key::PublicKey
+pub const fn radroots_trade::model::RadrootsTradeAgreementClaimV1::candidate_id(&self) -> &radroots_event::id::CandidateId
+pub const fn radroots_trade::model::RadrootsTradeAgreementClaimV1::claim_mutation_id(&self) -> &radroots_event::id::MutationId
+pub const fn radroots_trade::model::RadrootsTradeAgreementClaimV1::proposal_mutation_id(&self) -> &radroots_event::id::MutationId
+pub fn radroots_trade::model::RadrootsTradeAgreementClaimV1::reservation_commitment(&self) -> &str
+pub struct radroots_trade::model::RadrootsTradeProjectionV1
+impl radroots_trade::Projection
+pub fn radroots_trade::Projection::active_agreement_claim_ids(&self) -> &[radroots_event::id::MutationId]
+pub fn radroots_trade::Projection::agreement_claims(&self) -> &[radroots_trade::model::RadrootsTradeAgreementClaimV1]
+pub const fn radroots_trade::Projection::agreement_state(&self) -> radroots_trade::model::RadrootsTradeAgreementStateV1
+pub const fn radroots_trade::Projection::attestation_state(&self) -> radroots_trade::model::RadrootsTradeAttestationStateV1
+pub fn radroots_trade::Projection::attestations(&self) -> &[radroots_trade::evidence::RadrootsTradeAttestationRecordV1]
+pub const fn radroots_trade::Projection::buyer_pubkey(&self) -> core::option::Option<&radroots_identity::key::PublicKey>
+pub fn radroots_trade::Projection::cancelled_claim_ids(&self) -> &[radroots_event::id::MutationId]
+pub fn radroots_trade::Projection::candidate_heads(&self) -> &[radroots_event::id::MutationId]
+pub const fn radroots_trade::Projection::conflict_state(&self) -> radroots_trade::model::RadrootsTradeConflictStateV1
+pub fn radroots_trade::Projection::contested_claim_ids(&self) -> &[radroots_event::id::MutationId]
+pub fn radroots_trade::Projection::declined_candidate_ids(&self) -> &[radroots_event::id::CandidateId]
+pub const fn radroots_trade::Projection::evidence_state(&self) -> radroots_trade::evidence::RadrootsTradeEvidenceStateV1
+pub const fn radroots_trade::Projection::farm_id(&self) -> core::option::Option<&radroots_event::id::DTag>
+pub const fn radroots_trade::Projection::fulfillment_state(&self) -> radroots_trade::model::RadrootsTradeFulfillmentStateV1
+pub fn radroots_trade::Projection::issues(&self) -> &[radroots_trade::ReducerIssue]
+pub fn radroots_trade::Projection::missing_parent_ids(&self) -> &[radroots_event::id::MutationId]
+pub fn radroots_trade::Projection::missing_proposal_ids(&self) -> &[radroots_event::id::MutationId]
+pub const fn radroots_trade::Projection::negotiation_state(&self) -> radroots_trade::model::RadrootsTradeNegotiationStateV1
+pub const fn radroots_trade::Projection::payment_state(&self) -> radroots_trade::model::RadrootsTradePaymentStateV1
+pub const fn radroots_trade::Projection::private_terms_state(&self) -> radroots_trade::model::RadrootsTradePrivateTermsStateV1
+pub fn radroots_trade::Projection::projection_digest(&self) -> &str
+pub fn radroots_trade::Projection::reducer_contract_id(&self) -> &str
+pub const fn radroots_trade::Projection::reducer_version(&self) -> u16
+pub const fn radroots_trade::Projection::root_mutation_id(&self) -> core::option::Option<&radroots_event::id::MutationId>
+pub const fn radroots_trade::Projection::seller_pubkey(&self) -> core::option::Option<&radroots_identity::key::PublicKey>
+pub const fn radroots_trade::Projection::trade_id(&self) -> &radroots_event::id::TradeId
+pub fn radroots_trade::Projection::unsupported_mutation_ids(&self) -> &[radroots_event::id::MutationId]
+pub const radroots_trade::model::ORDER_ID_MAX_LEN: usize
+pub mod radroots_trade::reducer
+pub enum radroots_trade::reducer::RadrootsTradeReducerIssueV1
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::CancellationConflict
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::CancellationConflict::cancellation_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::CandidateIdMismatch
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::CandidateIdMismatch::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::CandidateIdMismatch::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::DecisionAuthorMismatch
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::DecisionAuthorMismatch::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::DecisionConflict
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::DecisionConflict::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::DecisionParentMissing
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::DecisionParentMissing::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::DecisionParentMissing::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::DoubleAcceptance
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::DoubleAcceptance::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::InvalidCausalChain
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::InvalidCausalChain::mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::InvalidMutation
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::InvalidMutation::mutation_id: core::option::Option<radroots_event::id::MutationId>
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::InvalidMutation::reason: alloc::string::String
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::MissingMutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::MissingParent
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::MissingParent::mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::MissingParent::parent_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::MissingProposal
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::MissingProposal::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::MissingProposal::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::MissingRootProposal
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::MissingSellerReservation
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::MissingSellerReservation::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::MultipleRootProposals
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::PrivateTermsUnavailable
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::PrivateTermsUnavailable::candidate_id: radroots_event::id::CandidateId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::ProjectionDigestUnavailable
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::ProjectionDigestUnavailable::reason: alloc::string::String
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::ReservationAuthorityMismatch
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::ReservationAuthorityMismatch::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::ReservationCandidateMismatch
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::ReservationCandidateMismatch::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::ReservationLineMismatch
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::ReservationLineMismatch::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::TradeIdentityMismatch
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::TradeIdentityMismatch::mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::UnsupportedSchema
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::UnsupportedSchema::mutation_id: radroots_event::id::MutationId
+pub radroots_trade::reducer::RadrootsTradeReducerIssueV1::UnsupportedSchema::schema_version: u16
+pub struct radroots_trade::reducer::RadrootsTradeReductionInputV1
+impl radroots_trade::ReductionInput
+pub fn radroots_trade::ReductionInput::attestations(&self) -> &[radroots_trade::evidence::RadrootsTradeAttestationRecordV1]
+pub const fn radroots_trade::ReductionInput::evidence_state(&self) -> radroots_trade::evidence::RadrootsTradeEvidenceStateV1
+pub fn radroots_trade::ReductionInput::mutations(&self) -> &[radroots_trade::evidence::RadrootsTradeMutationRecordV1]
+pub fn radroots_trade::ReductionInput::new(radroots_event::id::TradeId) -> Self
+pub const fn radroots_trade::ReductionInput::observed_at_unix_s(&self) -> core::option::Option<u64>
+pub fn radroots_trade::ReductionInput::private_terms(&self) -> &[radroots_trade::evidence::RadrootsTradePrivateTermsEvidenceV1]
+pub const fn radroots_trade::ReductionInput::trade_id(&self) -> &radroots_event::id::TradeId
+pub fn radroots_trade::ReductionInput::with_attestations(self, alloc::vec::Vec<radroots_trade::evidence::RadrootsTradeAttestationRecordV1>) -> Self
+pub fn radroots_trade::ReductionInput::with_evidence_state(self, radroots_trade::evidence::RadrootsTradeEvidenceStateV1) -> Self
+pub fn radroots_trade::ReductionInput::with_mutations(self, alloc::vec::Vec<radroots_trade::evidence::RadrootsTradeMutationRecordV1>) -> Self
+pub fn radroots_trade::ReductionInput::with_observed_at_unix_s(self, core::option::Option<u64>) -> Self
+pub fn radroots_trade::ReductionInput::with_private_terms(self, alloc::vec::Vec<radroots_trade::evidence::RadrootsTradePrivateTermsEvidenceV1>) -> Self
+pub const radroots_trade::reducer::RADROOTS_TRADE_REDUCER_CONTRACT_ID: &str
+pub const radroots_trade::reducer::RADROOTS_TRADE_REDUCER_VERSION: u16
+pub fn radroots_trade::reducer::reduce_trade_records(radroots_trade::ReductionInput) -> radroots_trade::Projection
+pub mod radroots_trade::validation
+pub struct radroots_trade::validation::ValidationError
+impl radroots_trade::workflow::Error
+pub const fn radroots_trade::workflow::Error::kind(&self) -> radroots_trade::workflow::ErrorKind
+pub const fn radroots_trade::workflow::Error::protocol_error(&self) -> core::option::Option<&radroots_event::trade::TradeProtocolError>
+impl core::error::Error for radroots_trade::workflow::Error
+pub fn radroots_trade::workflow::Error::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_trade::workflow::Error
+pub fn radroots_trade::workflow::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub mod radroots_trade::workflow
+#[non_exhaustive] pub enum radroots_trade::workflow::ErrorKind
+pub radroots_trade::workflow::ErrorKind::InvalidMutation
+pub radroots_trade::workflow::ErrorKind::InvalidPrivateTerms
+pub radroots_trade::workflow::ErrorKind::MissingMutationId
+pub radroots_trade::workflow::ErrorKind::UnsupportedSchema
+#[non_exhaustive] pub enum radroots_trade::workflow::WorkflowAction
+pub radroots_trade::workflow::WorkflowAction::Deliver
+pub radroots_trade::workflow::WorkflowAction::Persist
+pub radroots_trade::workflow::WorkflowAction::Sign
+pub radroots_trade::workflow::WorkflowAction::VerifyPrivateTerms
+pub struct radroots_trade::workflow::Error
+impl radroots_trade::workflow::Error
+pub const fn radroots_trade::workflow::Error::kind(&self) -> radroots_trade::workflow::ErrorKind
+pub const fn radroots_trade::workflow::Error::protocol_error(&self) -> core::option::Option<&radroots_event::trade::TradeProtocolError>
+impl core::error::Error for radroots_trade::workflow::Error
+pub fn radroots_trade::workflow::Error::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_trade::workflow::Error
+pub fn radroots_trade::workflow::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_trade::workflow::PrivateTermsPlan
+impl radroots_trade::workflow::PrivateTermsPlan
+pub fn radroots_trade::workflow::PrivateTermsPlan::artifact_id(&self) -> &str
+pub const fn radroots_trade::workflow::PrivateTermsPlan::candidate_id(&self) -> &radroots_event::id::CandidateId
+pub fn radroots_trade::workflow::PrivateTermsPlan::ciphertext_commitment(&self) -> &str
+pub fn radroots_trade::workflow::PrivateTermsPlan::schema_id(&self) -> &str
+pub struct radroots_trade::workflow::WorkflowPlan
+impl radroots_trade::workflow::WorkflowPlan
+pub fn radroots_trade::workflow::WorkflowPlan::into_mutation(self) -> radroots_event::trade::TradeMutationEnvelopeV1
+pub const fn radroots_trade::workflow::WorkflowPlan::kind(&self) -> radroots_event::trade::TradeMutationKindV1
+pub const fn radroots_trade::workflow::WorkflowPlan::mutation(&self) -> &radroots_event::trade::TradeMutationEnvelopeV1
+pub const fn radroots_trade::workflow::WorkflowPlan::mutation_id(&self) -> &radroots_event::id::MutationId
+pub fn radroots_trade::workflow::WorkflowPlan::prepare(radroots_event::trade::TradeMutationEnvelopeV1) -> core::result::Result<Self, radroots_trade::workflow::Error>
+pub const fn radroots_trade::workflow::WorkflowPlan::private_terms(&self) -> core::option::Option<&radroots_trade::workflow::PrivateTermsPlan>
+pub fn radroots_trade::workflow::WorkflowPlan::required_actions(&self) -> &[radroots_trade::workflow::WorkflowAction]
+pub const fn radroots_trade::workflow::WorkflowPlan::trade_id(&self) -> &radroots_event::id::TradeId
+pub enum radroots_trade::ReducerIssue
+pub radroots_trade::ReducerIssue::CancellationConflict
+pub radroots_trade::ReducerIssue::CancellationConflict::cancellation_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::CandidateIdMismatch
+pub radroots_trade::ReducerIssue::CandidateIdMismatch::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::CandidateIdMismatch::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::DecisionAuthorMismatch
+pub radroots_trade::ReducerIssue::DecisionAuthorMismatch::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::DecisionConflict
+pub radroots_trade::ReducerIssue::DecisionConflict::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::DecisionParentMissing
+pub radroots_trade::ReducerIssue::DecisionParentMissing::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::DecisionParentMissing::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::DoubleAcceptance
+pub radroots_trade::ReducerIssue::DoubleAcceptance::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::InvalidCausalChain
+pub radroots_trade::ReducerIssue::InvalidCausalChain::mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::InvalidMutation
+pub radroots_trade::ReducerIssue::InvalidMutation::mutation_id: core::option::Option<radroots_event::id::MutationId>
+pub radroots_trade::ReducerIssue::InvalidMutation::reason: alloc::string::String
+pub radroots_trade::ReducerIssue::MissingMutationId
+pub radroots_trade::ReducerIssue::MissingParent
+pub radroots_trade::ReducerIssue::MissingParent::mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::MissingParent::parent_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::MissingProposal
+pub radroots_trade::ReducerIssue::MissingProposal::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::MissingProposal::proposal_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::MissingRootProposal
+pub radroots_trade::ReducerIssue::MissingSellerReservation
+pub radroots_trade::ReducerIssue::MissingSellerReservation::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::MultipleRootProposals
+pub radroots_trade::ReducerIssue::PrivateTermsUnavailable
+pub radroots_trade::ReducerIssue::PrivateTermsUnavailable::candidate_id: radroots_event::id::CandidateId
+pub radroots_trade::ReducerIssue::ProjectionDigestUnavailable
+pub radroots_trade::ReducerIssue::ProjectionDigestUnavailable::reason: alloc::string::String
+pub radroots_trade::ReducerIssue::ReservationAuthorityMismatch
+pub radroots_trade::ReducerIssue::ReservationAuthorityMismatch::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::ReservationCandidateMismatch
+pub radroots_trade::ReducerIssue::ReservationCandidateMismatch::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::ReservationLineMismatch
+pub radroots_trade::ReducerIssue::ReservationLineMismatch::decision_mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::TradeIdentityMismatch
+pub radroots_trade::ReducerIssue::TradeIdentityMismatch::mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::UnsupportedSchema
+pub radroots_trade::ReducerIssue::UnsupportedSchema::mutation_id: radroots_event::id::MutationId
+pub radroots_trade::ReducerIssue::UnsupportedSchema::schema_version: u16
+pub struct radroots_trade::Error
+impl radroots_trade::workflow::Error
+pub const fn radroots_trade::workflow::Error::kind(&self) -> radroots_trade::workflow::ErrorKind
+pub const fn radroots_trade::workflow::Error::protocol_error(&self) -> core::option::Option<&radroots_event::trade::TradeProtocolError>
+impl core::error::Error for radroots_trade::workflow::Error
+pub fn radroots_trade::workflow::Error::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_trade::workflow::Error
+pub fn radroots_trade::workflow::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_trade::Projection
+impl radroots_trade::Projection
+pub fn radroots_trade::Projection::active_agreement_claim_ids(&self) -> &[radroots_event::id::MutationId]
+pub fn radroots_trade::Projection::agreement_claims(&self) -> &[radroots_trade::model::RadrootsTradeAgreementClaimV1]
+pub const fn radroots_trade::Projection::agreement_state(&self) -> radroots_trade::model::RadrootsTradeAgreementStateV1
+pub const fn radroots_trade::Projection::attestation_state(&self) -> radroots_trade::model::RadrootsTradeAttestationStateV1
+pub fn radroots_trade::Projection::attestations(&self) -> &[radroots_trade::evidence::RadrootsTradeAttestationRecordV1]
+pub const fn radroots_trade::Projection::buyer_pubkey(&self) -> core::option::Option<&radroots_identity::key::PublicKey>
+pub fn radroots_trade::Projection::cancelled_claim_ids(&self) -> &[radroots_event::id::MutationId]
+pub fn radroots_trade::Projection::candidate_heads(&self) -> &[radroots_event::id::MutationId]
+pub const fn radroots_trade::Projection::conflict_state(&self) -> radroots_trade::model::RadrootsTradeConflictStateV1
+pub fn radroots_trade::Projection::contested_claim_ids(&self) -> &[radroots_event::id::MutationId]
+pub fn radroots_trade::Projection::declined_candidate_ids(&self) -> &[radroots_event::id::CandidateId]
+pub const fn radroots_trade::Projection::evidence_state(&self) -> radroots_trade::evidence::RadrootsTradeEvidenceStateV1
+pub const fn radroots_trade::Projection::farm_id(&self) -> core::option::Option<&radroots_event::id::DTag>
+pub const fn radroots_trade::Projection::fulfillment_state(&self) -> radroots_trade::model::RadrootsTradeFulfillmentStateV1
+pub fn radroots_trade::Projection::issues(&self) -> &[radroots_trade::ReducerIssue]
+pub fn radroots_trade::Projection::missing_parent_ids(&self) -> &[radroots_event::id::MutationId]
+pub fn radroots_trade::Projection::missing_proposal_ids(&self) -> &[radroots_event::id::MutationId]
+pub const fn radroots_trade::Projection::negotiation_state(&self) -> radroots_trade::model::RadrootsTradeNegotiationStateV1
+pub const fn radroots_trade::Projection::payment_state(&self) -> radroots_trade::model::RadrootsTradePaymentStateV1
+pub const fn radroots_trade::Projection::private_terms_state(&self) -> radroots_trade::model::RadrootsTradePrivateTermsStateV1
+pub fn radroots_trade::Projection::projection_digest(&self) -> &str
+pub fn radroots_trade::Projection::reducer_contract_id(&self) -> &str
+pub const fn radroots_trade::Projection::reducer_version(&self) -> u16
+pub const fn radroots_trade::Projection::root_mutation_id(&self) -> core::option::Option<&radroots_event::id::MutationId>
+pub const fn radroots_trade::Projection::seller_pubkey(&self) -> core::option::Option<&radroots_identity::key::PublicKey>
+pub const fn radroots_trade::Projection::trade_id(&self) -> &radroots_event::id::TradeId
+pub fn radroots_trade::Projection::unsupported_mutation_ids(&self) -> &[radroots_event::id::MutationId]
+pub struct radroots_trade::ReductionInput
+impl radroots_trade::ReductionInput
+pub fn radroots_trade::ReductionInput::attestations(&self) -> &[radroots_trade::evidence::RadrootsTradeAttestationRecordV1]
+pub const fn radroots_trade::ReductionInput::evidence_state(&self) -> radroots_trade::evidence::RadrootsTradeEvidenceStateV1
+pub fn radroots_trade::ReductionInput::mutations(&self) -> &[radroots_trade::evidence::RadrootsTradeMutationRecordV1]
+pub fn radroots_trade::ReductionInput::new(radroots_event::id::TradeId) -> Self
+pub const fn radroots_trade::ReductionInput::observed_at_unix_s(&self) -> core::option::Option<u64>
+pub fn radroots_trade::ReductionInput::private_terms(&self) -> &[radroots_trade::evidence::RadrootsTradePrivateTermsEvidenceV1]
+pub const fn radroots_trade::ReductionInput::trade_id(&self) -> &radroots_event::id::TradeId
+pub fn radroots_trade::ReductionInput::with_attestations(self, alloc::vec::Vec<radroots_trade::evidence::RadrootsTradeAttestationRecordV1>) -> Self
+pub fn radroots_trade::ReductionInput::with_evidence_state(self, radroots_trade::evidence::RadrootsTradeEvidenceStateV1) -> Self
+pub fn radroots_trade::ReductionInput::with_mutations(self, alloc::vec::Vec<radroots_trade::evidence::RadrootsTradeMutationRecordV1>) -> Self
+pub fn radroots_trade::ReductionInput::with_observed_at_unix_s(self, core::option::Option<u64>) -> Self
+pub fn radroots_trade::ReductionInput::with_private_terms(self, alloc::vec::Vec<radroots_trade::evidence::RadrootsTradePrivateTermsEvidenceV1>) -> Self
+pub struct radroots_trade::ValidationError
+impl radroots_trade::workflow::Error
+pub const fn radroots_trade::workflow::Error::kind(&self) -> radroots_trade::workflow::ErrorKind
+pub const fn radroots_trade::workflow::Error::protocol_error(&self) -> core::option::Option<&radroots_event::trade::TradeProtocolError>
+impl core::error::Error for radroots_trade::workflow::Error
+pub fn radroots_trade::workflow::Error::source(&self) -> core::option::Option<&(dyn core::error::Error + 'static)>
+impl core::fmt::Display for radroots_trade::workflow::Error
+pub fn radroots_trade::workflow::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_trade::WorkflowPlan
+impl radroots_trade::workflow::WorkflowPlan
+pub fn radroots_trade::workflow::WorkflowPlan::into_mutation(self) -> radroots_event::trade::TradeMutationEnvelopeV1
+pub const fn radroots_trade::workflow::WorkflowPlan::kind(&self) -> radroots_event::trade::TradeMutationKindV1
+pub const fn radroots_trade::workflow::WorkflowPlan::mutation(&self) -> &radroots_event::trade::TradeMutationEnvelopeV1
+pub const fn radroots_trade::workflow::WorkflowPlan::mutation_id(&self) -> &radroots_event::id::MutationId
+pub fn radroots_trade::workflow::WorkflowPlan::prepare(radroots_event::trade::TradeMutationEnvelopeV1) -> core::result::Result<Self, radroots_trade::workflow::Error>
+pub const fn radroots_trade::workflow::WorkflowPlan::private_terms(&self) -> core::option::Option<&radroots_trade::workflow::PrivateTermsPlan>
+pub fn radroots_trade::workflow::WorkflowPlan::required_actions(&self) -> &[radroots_trade::workflow::WorkflowAction]
+pub const fn radroots_trade::workflow::WorkflowPlan::trade_id(&self) -> &radroots_event::id::TradeId
diff --git a/contracts/api_baselines/radroots_transport.txt b/contracts/api_baselines/radroots_transport.txt
@@ -0,0 +1,683 @@
+pub mod radroots_transport
+pub mod radroots_transport::capability
+pub enum radroots_transport::capability::Availability
+pub radroots_transport::capability::Availability::Available
+pub radroots_transport::capability::Availability::Degraded
+pub radroots_transport::capability::Availability::Unavailable
+impl core::convert::From<radroots_protocol::capability::v1::Availability> for radroots_transport::capability::Availability
+pub fn radroots_transport::capability::Availability::from(radroots_protocol::capability::v1::Availability) -> Self
+impl core::convert::From<radroots_transport::capability::Availability> for radroots_protocol::capability::v1::Availability
+pub fn radroots_protocol::capability::v1::Availability::from(radroots_transport::capability::Availability) -> Self
+pub enum radroots_transport::capability::Maturity
+pub radroots_transport::capability::Maturity::Experimental
+pub radroots_transport::capability::Maturity::Preview
+pub radroots_transport::capability::Maturity::Stable
+impl core::convert::From<radroots_protocol::capability::v1::Maturity> for radroots_transport::capability::Maturity
+pub fn radroots_transport::capability::Maturity::from(radroots_protocol::capability::v1::Maturity) -> Self
+impl core::convert::From<radroots_transport::capability::Maturity> for radroots_protocol::capability::v1::Maturity
+pub fn radroots_protocol::capability::v1::Maturity::from(radroots_transport::capability::Maturity) -> Self
+pub struct radroots_transport::capability::SinkCapabilities
+impl radroots_transport::capability::SinkCapabilities
+pub const radroots_transport::capability::SinkCapabilities::DELIVER: Self
+pub const radroots_transport::capability::SinkCapabilities::NONE: Self
+pub const fn radroots_transport::capability::SinkCapabilities::can_deliver(self) -> bool
+pub const fn radroots_transport::capability::SinkCapabilities::can_gateway_forward(self) -> bool
+pub const fn radroots_transport::capability::SinkCapabilities::can_observe_receipts(self) -> bool
+pub const fn radroots_transport::capability::SinkCapabilities::with_gateway_forwarding(self, bool) -> Self
+pub const fn radroots_transport::capability::SinkCapabilities::with_receipt_observation(self, bool) -> Self
+impl core::convert::From<&radroots_protocol::capability::v1::TransportDescriptor> for radroots_transport::capability::SinkCapabilities
+pub fn radroots_transport::capability::SinkCapabilities::from(&radroots_protocol::capability::v1::TransportDescriptor) -> Self
+pub struct radroots_transport::capability::SourceCapabilities
+impl radroots_transport::capability::SourceCapabilities
+pub const radroots_transport::capability::SourceCapabilities::FETCH: Self
+pub const radroots_transport::capability::SourceCapabilities::NONE: Self
+pub const fn radroots_transport::capability::SourceCapabilities::can_discover(self) -> bool
+pub const fn radroots_transport::capability::SourceCapabilities::can_fetch(self) -> bool
+pub const fn radroots_transport::capability::SourceCapabilities::with_discovery(self, bool) -> Self
+impl core::convert::From<&radroots_protocol::capability::v1::TransportDescriptor> for radroots_transport::capability::SourceCapabilities
+pub fn radroots_transport::capability::SourceCapabilities::from(&radroots_protocol::capability::v1::TransportDescriptor) -> Self
+pub mod radroots_transport::endpoint
+pub struct radroots_transport::endpoint::EndpointUri(_)
+impl radroots_transport::target::EndpointUri
+pub fn radroots_transport::target::EndpointUri::as_str(&self) -> &str
+pub fn radroots_transport::target::EndpointUri::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl core::convert::AsRef<str> for radroots_transport::target::EndpointUri
+pub fn radroots_transport::target::EndpointUri::as_ref(&self) -> &str
+impl core::convert::TryFrom<&str> for radroots_transport::target::EndpointUri
+pub type radroots_transport::target::EndpointUri::Error = radroots_transport::error::Error
+pub fn radroots_transport::target::EndpointUri::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_transport::target::EndpointUri
+pub fn radroots_transport::target::EndpointUri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_transport::target::EndpointUri
+pub type radroots_transport::target::EndpointUri::Err = radroots_transport::error::Error
+pub fn radroots_transport::target::EndpointUri::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::target::EndpointUri
+pub fn radroots_transport::target::EndpointUri::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::endpoint::TargetLabel(_)
+impl radroots_transport::target::TargetLabel
+pub fn radroots_transport::target::TargetLabel::as_str(&self) -> &str
+pub fn radroots_transport::target::TargetLabel::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl core::convert::AsRef<str> for radroots_transport::target::TargetLabel
+pub fn radroots_transport::target::TargetLabel::as_ref(&self) -> &str
+impl core::convert::TryFrom<&str> for radroots_transport::target::TargetLabel
+pub type radroots_transport::target::TargetLabel::Error = radroots_transport::error::Error
+pub fn radroots_transport::target::TargetLabel::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_transport::target::TargetLabel
+pub fn radroots_transport::target::TargetLabel::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_transport::target::TargetLabel
+pub type radroots_transport::target::TargetLabel::Err = radroots_transport::error::Error
+pub fn radroots_transport::target::TargetLabel::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::target::TargetLabel
+pub fn radroots_transport::target::TargetLabel::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::endpoint::TargetScope(_)
+impl radroots_transport::target::TargetScope
+pub fn radroots_transport::target::TargetScope::as_str(&self) -> &str
+pub fn radroots_transport::target::TargetScope::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl core::convert::AsRef<str> for radroots_transport::target::TargetScope
+pub fn radroots_transport::target::TargetScope::as_ref(&self) -> &str
+impl core::convert::TryFrom<&str> for radroots_transport::target::TargetScope
+pub type radroots_transport::target::TargetScope::Error = radroots_transport::error::Error
+pub fn radroots_transport::target::TargetScope::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_transport::target::TargetScope
+pub fn radroots_transport::target::TargetScope::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_transport::target::TargetScope
+pub type radroots_transport::target::TargetScope::Err = radroots_transport::error::Error
+pub fn radroots_transport::target::TargetScope::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::target::TargetScope
+pub fn radroots_transport::target::TargetScope::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub const radroots_transport::endpoint::ENDPOINT_URI_MAX_BYTES: usize
+pub const radroots_transport::endpoint::TARGET_LABEL_MAX_BYTES: usize
+pub const radroots_transport::endpoint::TARGET_SCOPE_MAX_BYTES: usize
+pub mod radroots_transport::error
+pub enum radroots_transport::error::Error
+pub radroots_transport::error::Error::DeliveryReceiptRequestIdMismatch
+pub radroots_transport::error::Error::DeliveryReceiptTargetSetMismatch
+pub radroots_transport::error::Error::DeliveryTargetReceiptAttemptMismatch
+pub radroots_transport::error::Error::DeliveryTargetReceiptStatusMismatch
+pub radroots_transport::error::Error::DuplicateDeliveryTargetReceipt
+pub radroots_transport::error::Error::DuplicateFetchAuthor
+pub radroots_transport::error::Error::DuplicateFetchKind
+pub radroots_transport::error::Error::DuplicateFetchTargetOutcome
+pub radroots_transport::error::Error::DuplicateRequiredTargetFingerprint
+pub radroots_transport::error::Error::DuplicateTargetFingerprint
+pub radroots_transport::error::Error::EmptyDeliveryRequestId
+pub radroots_transport::error::Error::EmptyFetchCursor
+pub radroots_transport::error::Error::EmptyFetchRequestId
+pub radroots_transport::error::Error::EmptyPayloadBytes
+pub radroots_transport::error::Error::EmptyPayloadId
+pub radroots_transport::error::Error::EmptyPayloadLabel
+pub radroots_transport::error::Error::EmptyRequiredTargetSet
+pub radroots_transport::error::Error::EmptyTargetLabel
+pub radroots_transport::error::Error::EmptyTargetScope
+pub radroots_transport::error::Error::EmptyTargetSet
+pub radroots_transport::error::Error::EmptyTargetUri
+pub radroots_transport::error::Error::EmptyTransportKind
+pub radroots_transport::error::Error::FetchPageLimitExceeded
+pub radroots_transport::error::Error::FetchPageRequestMismatch
+pub radroots_transport::error::Error::FetchSelectorTooLarge
+pub radroots_transport::error::Error::InvalidDeliveryDeadline
+pub radroots_transport::error::Error::InvalidDeliveryOutcome
+pub radroots_transport::error::Error::InvalidDeliveryRequestId
+pub radroots_transport::error::Error::InvalidDeliveryTimestamp
+pub radroots_transport::error::Error::InvalidFetchCursor
+pub radroots_transport::error::Error::InvalidFetchDeadline
+pub radroots_transport::error::Error::InvalidFetchLimit
+pub radroots_transport::error::Error::InvalidFetchRequestId
+pub radroots_transport::error::Error::InvalidFetchTimeRange
+pub radroots_transport::error::Error::InvalidObservedAt
+pub radroots_transport::error::Error::InvalidPayloadBytes
+pub radroots_transport::error::Error::InvalidPayloadDigest
+pub radroots_transport::error::Error::InvalidPayloadId
+pub radroots_transport::error::Error::InvalidPayloadLabel
+pub radroots_transport::error::Error::InvalidSatisfactionPolicy
+pub radroots_transport::error::Error::InvalidTargetFingerprint
+pub radroots_transport::error::Error::InvalidTargetLabel
+pub radroots_transport::error::Error::InvalidTargetScope
+pub radroots_transport::error::Error::InvalidTargetUri
+pub radroots_transport::error::Error::InvalidTransportKind
+pub radroots_transport::error::Error::MissingDeliveryTargetReceipt
+pub radroots_transport::error::Error::PayloadDigestMismatch
+pub radroots_transport::error::Error::RequiredTargetNotRequested
+pub radroots_transport::error::Error::TargetSetTooLarge
+pub radroots_transport::error::Error::TransportOutcomeStatusMismatch
+pub radroots_transport::error::Error::UnexpectedDeliveryTargetReceipt
+pub radroots_transport::error::Error::UnexpectedFetchEvent
+pub radroots_transport::error::Error::UnexpectedFetchProvenance
+pub radroots_transport::error::Error::UnexpectedFetchTargetOutcome
+pub radroots_transport::error::Error::UnsupportedOperation
+impl core::fmt::Display for radroots_transport::error::Error
+pub fn radroots_transport::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub mod radroots_transport::outcome
+pub enum radroots_transport::outcome::DeliveryOutcomeKind
+pub radroots_transport::outcome::DeliveryOutcomeKind::Accepted
+pub radroots_transport::outcome::DeliveryOutcomeKind::Delivered
+pub radroots_transport::outcome::DeliveryOutcomeKind::Failed
+pub radroots_transport::outcome::DeliveryOutcomeKind::Rejected
+pub radroots_transport::outcome::DeliveryOutcomeKind::Unavailable
+pub enum radroots_transport::outcome::FetchTargetState
+pub radroots_transport::outcome::FetchTargetState::Cancelled
+pub radroots_transport::outcome::FetchTargetState::Complete
+pub radroots_transport::outcome::FetchTargetState::FailedRetryable
+pub radroots_transport::outcome::FetchTargetState::FailedTerminal
+pub radroots_transport::outcome::FetchTargetState::Partial
+pub radroots_transport::outcome::FetchTargetState::Unavailable
+impl radroots_transport::outcome::FetchTargetState
+pub const fn radroots_transport::outcome::FetchTargetState::is_retryable(self) -> bool
+pub const fn radroots_transport::outcome::FetchTargetState::is_terminal(self) -> bool
+pub enum radroots_transport::outcome::Retryability
+pub radroots_transport::outcome::Retryability::NotApplicable
+pub radroots_transport::outcome::Retryability::Retryable
+pub radroots_transport::outcome::Retryability::Terminal
+pub struct radroots_transport::outcome::DeliveryOutcome
+impl radroots_transport::outcome::DeliveryOutcome
+pub const fn radroots_transport::outcome::DeliveryOutcome::accepted() -> Self
+pub fn radroots_transport::outcome::DeliveryOutcome::code(&self) -> core::option::Option<&str>
+pub const fn radroots_transport::outcome::DeliveryOutcome::delivered() -> Self
+pub const fn radroots_transport::outcome::DeliveryOutcome::failed(radroots_transport::outcome::Retryability) -> core::result::Result<Self, radroots_transport::error::Error>
+pub const fn radroots_transport::outcome::DeliveryOutcome::is_retryable(&self) -> bool
+pub const fn radroots_transport::outcome::DeliveryOutcome::is_terminal(&self) -> bool
+pub const fn radroots_transport::outcome::DeliveryOutcome::kind(&self) -> radroots_transport::outcome::DeliveryOutcomeKind
+pub fn radroots_transport::outcome::DeliveryOutcome::message(&self) -> core::option::Option<&str>
+pub const fn radroots_transport::outcome::DeliveryOutcome::rejected() -> Self
+pub const fn radroots_transport::outcome::DeliveryOutcome::retryability(&self) -> radroots_transport::outcome::Retryability
+pub const fn radroots_transport::outcome::DeliveryOutcome::satisfies(&self, radroots_transport::policy::SatisfactionClass) -> bool
+pub const fn radroots_transport::outcome::DeliveryOutcome::unavailable() -> Self
+pub fn radroots_transport::outcome::DeliveryOutcome::with_detail(self, impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::outcome::DeliveryOutcome
+pub fn radroots_transport::outcome::DeliveryOutcome::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::outcome::FetchTargetOutcome
+impl radroots_transport::outcome::FetchTargetOutcome
+pub fn radroots_transport::outcome::FetchTargetOutcome::message(&self) -> core::option::Option<&str>
+pub const fn radroots_transport::outcome::FetchTargetOutcome::new(radroots_transport::target::TargetFingerprint, radroots_transport::outcome::FetchTargetState) -> Self
+pub const fn radroots_transport::outcome::FetchTargetOutcome::state(&self) -> radroots_transport::outcome::FetchTargetState
+pub const fn radroots_transport::outcome::FetchTargetOutcome::target(&self) -> &radroots_transport::target::TargetFingerprint
+pub fn radroots_transport::outcome::FetchTargetOutcome::with_message(self, impl core::convert::Into<alloc::string::String>) -> Self
+pub const radroots_transport::outcome::DELIVERY_OUTCOME_CODE_MAX_BYTES: usize
+pub const radroots_transport::outcome::DELIVERY_OUTCOME_MESSAGE_MAX_BYTES: usize
+pub mod radroots_transport::policy
+pub enum radroots_transport::policy::SatisfactionClass
+pub radroots_transport::policy::SatisfactionClass::Accepted
+pub radroots_transport::policy::SatisfactionClass::Delivered
+pub enum radroots_transport::policy::SatisfactionState
+pub radroots_transport::policy::SatisfactionState::Exhausted
+pub radroots_transport::policy::SatisfactionState::Pending
+pub radroots_transport::policy::SatisfactionState::Satisfied
+pub struct radroots_transport::policy::SatisfactionPolicy
+impl radroots_transport::policy::SatisfactionPolicy
+pub const fn radroots_transport::policy::SatisfactionPolicy::class(&self) -> radroots_transport::policy::SatisfactionClass
+pub const fn radroots_transport::policy::SatisfactionPolicy::new(radroots_transport::policy::SatisfactionClass, radroots_transport::policy::TargetPolicy) -> Self
+pub const fn radroots_transport::policy::SatisfactionPolicy::targets(&self) -> &radroots_transport::policy::TargetPolicy
+pub fn radroots_transport::policy::SatisfactionPolicy::validate_for(&self, &radroots_transport::target::TargetSet) -> core::result::Result<(), radroots_transport::error::Error>
+pub struct radroots_transport::policy::TargetPolicy
+impl radroots_transport::policy::TargetPolicy
+pub const fn radroots_transport::policy::TargetPolicy::all() -> Self
+pub const fn radroots_transport::policy::TargetPolicy::any() -> Self
+pub const fn radroots_transport::policy::TargetPolicy::is_all(&self) -> bool
+pub const fn radroots_transport::policy::TargetPolicy::is_any(&self) -> bool
+pub const fn radroots_transport::policy::TargetPolicy::quorum(u16) -> core::result::Result<Self, radroots_transport::error::Error>
+pub const fn radroots_transport::policy::TargetPolicy::quorum_threshold(&self) -> core::option::Option<u16>
+pub fn radroots_transport::policy::TargetPolicy::required(alloc::vec::Vec<radroots_transport::target::TargetFingerprint>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::policy::TargetPolicy::required_targets(&self) -> core::option::Option<&[radroots_transport::target::TargetFingerprint]>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::policy::TargetPolicy
+pub fn radroots_transport::policy::TargetPolicy::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub fn radroots_transport::policy::evaluate_satisfaction<'a, I>(&radroots_transport::policy::SatisfactionPolicy, &radroots_transport::target::TargetSet, I) -> core::result::Result<radroots_transport::policy::SatisfactionState, radroots_transport::error::Error> where I: core::iter::traits::collect::IntoIterator<Item = (&'a radroots_transport::target::TargetFingerprint, &'a radroots_transport::outcome::DeliveryOutcome)>
+pub mod radroots_transport::sink
+pub struct radroots_transport::sink::DeliveryPayload
+impl radroots_transport::sink::DeliveryPayload
+pub const fn radroots_transport::sink::DeliveryPayload::event(&self) -> &radroots_event::draft::SignedEvent
+pub const fn radroots_transport::sink::DeliveryPayload::new(radroots_event::draft::SignedEvent) -> Self
+pub struct radroots_transport::sink::DeliveryReceipt
+impl radroots_transport::sink::DeliveryReceipt
+pub fn radroots_transport::sink::DeliveryReceipt::for_request(&radroots_transport::sink::DeliveryRequest, alloc::vec::Vec<radroots_transport::sink::DeliveryTargetReceipt>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::sink::DeliveryReceipt::is_satisfied(&self, &radroots_transport::sink::DeliveryRequest) -> core::result::Result<bool, radroots_transport::error::Error>
+pub const fn radroots_transport::sink::DeliveryReceipt::request_id(&self) -> &radroots_transport::sink::DeliveryRequestId
+pub fn radroots_transport::sink::DeliveryReceipt::satisfaction(&self, &radroots_transport::sink::DeliveryRequest) -> core::result::Result<radroots_transport::policy::SatisfactionState, radroots_transport::error::Error>
+pub fn radroots_transport::sink::DeliveryReceipt::target_receipts(&self) -> &[radroots_transport::sink::DeliveryTargetReceipt]
+pub fn radroots_transport::sink::DeliveryReceipt::validate_for_request(&self, &radroots_transport::sink::DeliveryRequest) -> core::result::Result<(), radroots_transport::error::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::sink::DeliveryReceipt
+pub fn radroots_transport::sink::DeliveryReceipt::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::sink::DeliveryRequest
+impl radroots_transport::sink::DeliveryRequest
+pub const fn radroots_transport::sink::DeliveryRequest::deadline_unix_ms(&self) -> u64
+pub fn radroots_transport::sink::DeliveryRequest::new(impl core::convert::Into<alloc::string::String>, radroots_transport::sink::DeliveryPayload, radroots_transport::target::TargetSet, radroots_transport::policy::SatisfactionPolicy, u64) -> core::result::Result<Self, radroots_transport::error::Error>
+pub const fn radroots_transport::sink::DeliveryRequest::payload(&self) -> &radroots_transport::sink::DeliveryPayload
+pub const fn radroots_transport::sink::DeliveryRequest::request_id(&self) -> &radroots_transport::sink::DeliveryRequestId
+pub const fn radroots_transport::sink::DeliveryRequest::satisfaction(&self) -> &radroots_transport::policy::SatisfactionPolicy
+pub const fn radroots_transport::sink::DeliveryRequest::target_set(&self) -> &radroots_transport::target::TargetSet
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::sink::DeliveryRequest
+pub fn radroots_transport::sink::DeliveryRequest::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::sink::DeliveryRequestId(_)
+impl radroots_transport::sink::DeliveryRequestId
+pub fn radroots_transport::sink::DeliveryRequestId::as_str(&self) -> &str
+pub fn radroots_transport::sink::DeliveryRequestId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl serde_core::ser::Serialize for radroots_transport::sink::DeliveryRequestId
+pub fn radroots_transport::sink::DeliveryRequestId::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_transport::sink::DeliveryRequestId
+pub fn radroots_transport::sink::DeliveryRequestId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::sink::DeliveryTargetReceipt
+impl radroots_transport::sink::DeliveryTargetReceipt
+pub const fn radroots_transport::sink::DeliveryTargetReceipt::attempted(radroots_transport::target::Target, radroots_transport::outcome::DeliveryOutcome) -> Self
+pub const fn radroots_transport::sink::DeliveryTargetReceipt::outcome(&self) -> &radroots_transport::outcome::DeliveryOutcome
+pub fn radroots_transport::sink::DeliveryTargetReceipt::skipped(radroots_transport::target::Target, radroots_transport::outcome::DeliveryOutcome) -> core::result::Result<Self, radroots_transport::error::Error>
+pub const fn radroots_transport::sink::DeliveryTargetReceipt::target(&self) -> &radroots_transport::target::Target
+pub const fn radroots_transport::sink::DeliveryTargetReceipt::was_attempted(&self) -> bool
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::sink::DeliveryTargetReceipt
+pub fn radroots_transport::sink::DeliveryTargetReceipt::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::sink::SinkFailure
+impl radroots_transport::sink::SinkFailure
+pub fn radroots_transport::sink::SinkFailure::code(&self) -> &str
+pub fn radroots_transport::sink::SinkFailure::for_request(&radroots_transport::sink::DeliveryRequest, impl core::convert::Into<alloc::string::String>, radroots_transport::outcome::Retryability, core::option::Option<u64>, core::option::Option<alloc::string::String>, alloc::vec::Vec<radroots_transport::sink::DeliveryTargetReceipt>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::sink::SinkFailure::invalid_contract(&radroots_transport::sink::DeliveryRequest) -> Self
+pub fn radroots_transport::sink::SinkFailure::message(&self) -> core::option::Option<&str>
+pub fn radroots_transport::sink::SinkFailure::partial_evidence(&self) -> &[radroots_transport::sink::DeliveryTargetReceipt]
+pub const fn radroots_transport::sink::SinkFailure::retry_after_unix_ms(&self) -> core::option::Option<u64>
+pub const fn radroots_transport::sink::SinkFailure::retryability(&self) -> radroots_transport::outcome::Retryability
+pub fn radroots_transport::sink::SinkFailure::validate_for_request(&self, &radroots_transport::sink::DeliveryRequest) -> core::result::Result<(), radroots_transport::error::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::sink::SinkFailure
+pub fn radroots_transport::sink::SinkFailure::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::sink::SinkStatus
+impl radroots_transport::SinkStatus
+pub const fn radroots_transport::SinkStatus::availability(&self) -> radroots_transport::capability::Availability
+pub const fn radroots_transport::SinkStatus::capabilities(&self) -> radroots_transport::capability::SinkCapabilities
+pub fn radroots_transport::SinkStatus::from_descriptor(&radroots_protocol::capability::v1::TransportDescriptor, bool, impl core::convert::Into<alloc::string::String>) -> Self
+pub const fn radroots_transport::SinkStatus::is_configured(&self) -> bool
+pub const fn radroots_transport::SinkStatus::maturity(&self) -> radroots_transport::capability::Maturity
+pub fn radroots_transport::SinkStatus::message(&self) -> &str
+pub fn radroots_transport::SinkStatus::new(radroots_transport::TransportId, bool, radroots_transport::capability::Maturity, radroots_transport::capability::Availability, radroots_transport::capability::SinkCapabilities, impl core::convert::Into<alloc::string::String>) -> Self
+pub const fn radroots_transport::SinkStatus::transport_id(&self) -> radroots_transport::TransportId
+pub const radroots_transport::sink::DELIVERY_REQUEST_ID_MAX_BYTES: usize
+pub trait radroots_transport::sink::EventSink: core::marker::Send + core::marker::Sync
+pub fn radroots_transport::sink::EventSink::deliver(&self, radroots_transport::sink::DeliveryRequest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::sink::DeliveryReceipt, radroots_transport::sink::SinkFailure>>
+pub fn radroots_transport::sink::EventSink::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::SinkStatus, radroots_transport::error::Error>>
+pub mod radroots_transport::source
+pub enum radroots_transport::source::NextPage
+pub radroots_transport::source::NextPage::Cancelled
+pub radroots_transport::source::NextPage::Cancelled::resume_from: core::option::Option<radroots_transport::source::FetchCursor>
+pub radroots_transport::source::NextPage::Complete
+pub radroots_transport::source::NextPage::Cursor(radroots_transport::source::FetchCursor)
+pub struct radroots_transport::source::EventProvenance
+impl radroots_transport::source::EventProvenance
+pub const fn radroots_transport::source::EventProvenance::cursor(&self) -> core::option::Option<&radroots_transport::source::FetchCursor>
+pub fn radroots_transport::source::EventProvenance::new(radroots_transport::TransportId, radroots_transport::target::TargetFingerprint, u64) -> core::result::Result<Self, radroots_transport::error::Error>
+pub const fn radroots_transport::source::EventProvenance::observed_at_unix_ms(&self) -> u64
+pub const fn radroots_transport::source::EventProvenance::target(&self) -> &radroots_transport::target::TargetFingerprint
+pub const fn radroots_transport::source::EventProvenance::transport_id(&self) -> radroots_transport::TransportId
+pub fn radroots_transport::source::EventProvenance::with_cursor(self, radroots_transport::source::FetchCursor) -> Self
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::source::EventProvenance
+pub fn radroots_transport::source::EventProvenance::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::source::FetchBounds
+impl radroots_transport::source::FetchBounds
+pub const fn radroots_transport::source::FetchBounds::deadline_unix_ms(self) -> u64
+pub const fn radroots_transport::source::FetchBounds::limit(self) -> u16
+pub const fn radroots_transport::source::FetchBounds::new(u16, u64) -> core::result::Result<Self, radroots_transport::error::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::source::FetchBounds
+pub fn radroots_transport::source::FetchBounds::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::source::FetchCursor(_)
+impl radroots_transport::source::FetchCursor
+pub fn radroots_transport::source::FetchCursor::as_str(&self) -> &str
+pub fn radroots_transport::source::FetchCursor::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl core::fmt::Display for radroots_transport::source::FetchCursor
+pub fn radroots_transport::source::FetchCursor::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_transport::source::FetchCursor
+pub fn radroots_transport::source::FetchCursor::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_transport::source::FetchCursor
+pub fn radroots_transport::source::FetchCursor::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::source::FetchPage
+impl radroots_transport::source::FetchPage
+pub fn radroots_transport::source::FetchPage::events(&self) -> &[radroots_transport::source::ObservedEvent]
+pub fn radroots_transport::source::FetchPage::for_request(&radroots_transport::source::FetchRequest, alloc::vec::Vec<radroots_transport::source::ObservedEvent>, alloc::vec::Vec<radroots_transport::outcome::FetchTargetOutcome>, radroots_transport::source::NextPage) -> core::result::Result<Self, radroots_transport::error::Error>
+pub const fn radroots_transport::source::FetchPage::next_page(&self) -> &radroots_transport::source::NextPage
+pub const fn radroots_transport::source::FetchPage::request_id(&self) -> &radroots_transport::source::FetchRequestId
+pub fn radroots_transport::source::FetchPage::target_outcomes(&self) -> &[radroots_transport::outcome::FetchTargetOutcome]
+pub fn radroots_transport::source::FetchPage::validate(&self) -> core::result::Result<(), radroots_transport::error::Error>
+pub fn radroots_transport::source::FetchPage::validate_for_request(&self, &radroots_transport::source::FetchRequest) -> core::result::Result<(), radroots_transport::error::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::source::FetchPage
+pub fn radroots_transport::source::FetchPage::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::source::FetchRequest
+impl radroots_transport::source::FetchRequest
+pub const fn radroots_transport::source::FetchRequest::bounds(&self) -> radroots_transport::source::FetchBounds
+pub fn radroots_transport::source::FetchRequest::cursor(&self) -> core::option::Option<&radroots_transport::source::FetchCursor>
+pub fn radroots_transport::source::FetchRequest::new(impl core::convert::Into<alloc::string::String>, radroots_transport::target::TargetSet, radroots_transport::source::FetchBounds) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::source::FetchRequest::request_id(&self) -> &radroots_transport::source::FetchRequestId
+pub const fn radroots_transport::source::FetchRequest::selector(&self) -> &radroots_transport::source::FetchSelector
+pub fn radroots_transport::source::FetchRequest::target_set(&self) -> &radroots_transport::target::TargetSet
+pub fn radroots_transport::source::FetchRequest::with_cursor(self, radroots_transport::source::FetchCursor) -> Self
+pub fn radroots_transport::source::FetchRequest::with_selector(self, radroots_transport::source::FetchSelector) -> Self
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::source::FetchRequest
+pub fn radroots_transport::source::FetchRequest::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::source::FetchRequestId(_)
+impl radroots_transport::source::FetchRequestId
+pub fn radroots_transport::source::FetchRequestId::as_str(&self) -> &str
+pub fn radroots_transport::source::FetchRequestId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl core::fmt::Display for radroots_transport::source::FetchRequestId
+pub fn radroots_transport::source::FetchRequestId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_transport::source::FetchRequestId
+pub fn radroots_transport::source::FetchRequestId::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_transport::source::FetchRequestId
+pub fn radroots_transport::source::FetchRequestId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::source::FetchSelector
+impl radroots_transport::source::FetchSelector
+pub const fn radroots_transport::source::FetchSelector::all() -> Self
+pub fn radroots_transport::source::FetchSelector::authors(&self) -> &[radroots_identity::key::PublicKey]
+pub fn radroots_transport::source::FetchSelector::kinds(&self) -> &[u32]
+pub fn radroots_transport::source::FetchSelector::matches(&self, &radroots_event::draft::SignedEvent) -> bool
+pub const fn radroots_transport::source::FetchSelector::since_unix_seconds(&self) -> core::option::Option<u64>
+pub const fn radroots_transport::source::FetchSelector::until_unix_seconds(&self) -> core::option::Option<u64>
+pub fn radroots_transport::source::FetchSelector::with_authors(self, alloc::vec::Vec<radroots_identity::key::PublicKey>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::source::FetchSelector::with_kinds(self, alloc::vec::Vec<u32>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::source::FetchSelector::with_since_unix_seconds(self, u64) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::source::FetchSelector::with_until_unix_seconds(self, u64) -> core::result::Result<Self, radroots_transport::error::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::source::FetchSelector
+pub fn radroots_transport::source::FetchSelector::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::source::ObservedEvent
+impl radroots_transport::source::ObservedEvent
+pub const fn radroots_transport::source::ObservedEvent::event(&self) -> &radroots_event::draft::SignedEvent
+pub const fn radroots_transport::source::ObservedEvent::new(radroots_event::draft::SignedEvent, radroots_transport::source::EventProvenance) -> Self
+pub const fn radroots_transport::source::ObservedEvent::provenance(&self) -> &radroots_transport::source::EventProvenance
+pub struct radroots_transport::source::SourceStatus
+impl radroots_transport::SourceStatus
+pub const fn radroots_transport::SourceStatus::availability(&self) -> radroots_transport::capability::Availability
+pub const fn radroots_transport::SourceStatus::capabilities(&self) -> radroots_transport::capability::SourceCapabilities
+pub fn radroots_transport::SourceStatus::from_descriptor(&radroots_protocol::capability::v1::TransportDescriptor, bool, impl core::convert::Into<alloc::string::String>) -> Self
+pub const fn radroots_transport::SourceStatus::is_configured(&self) -> bool
+pub const fn radroots_transport::SourceStatus::maturity(&self) -> radroots_transport::capability::Maturity
+pub fn radroots_transport::SourceStatus::message(&self) -> &str
+pub fn radroots_transport::SourceStatus::new(radroots_transport::TransportId, bool, radroots_transport::capability::Maturity, radroots_transport::capability::Availability, radroots_transport::capability::SourceCapabilities, impl core::convert::Into<alloc::string::String>) -> Self
+pub const fn radroots_transport::SourceStatus::transport_id(&self) -> radroots_transport::TransportId
+pub const radroots_transport::source::FETCH_CURSOR_MAX_BYTES: usize
+pub const radroots_transport::source::FETCH_PAGE_MAX_EVENTS: u16
+pub const radroots_transport::source::FETCH_REQUEST_ID_MAX_BYTES: usize
+pub const radroots_transport::source::FETCH_SELECTOR_MAX_AUTHORS: usize
+pub const radroots_transport::source::FETCH_SELECTOR_MAX_KINDS: usize
+pub trait radroots_transport::source::EventSource: core::marker::Send + core::marker::Sync
+pub fn radroots_transport::source::EventSource::fetch(&self, radroots_transport::source::FetchRequest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::source::FetchPage, radroots_transport::error::Error>>
+pub fn radroots_transport::source::EventSource::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::SourceStatus, radroots_transport::error::Error>>
+pub type radroots_transport::source::BoxFuture<'a, T> = core::pin::Pin<alloc::boxed::Box<(dyn core::future::future::Future<Output = T> + core::marker::Send + 'a)>>
+pub mod radroots_transport::target
+pub struct radroots_transport::target::EndpointUri(_)
+impl radroots_transport::target::EndpointUri
+pub fn radroots_transport::target::EndpointUri::as_str(&self) -> &str
+pub fn radroots_transport::target::EndpointUri::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl core::convert::AsRef<str> for radroots_transport::target::EndpointUri
+pub fn radroots_transport::target::EndpointUri::as_ref(&self) -> &str
+impl core::convert::TryFrom<&str> for radroots_transport::target::EndpointUri
+pub type radroots_transport::target::EndpointUri::Error = radroots_transport::error::Error
+pub fn radroots_transport::target::EndpointUri::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_transport::target::EndpointUri
+pub fn radroots_transport::target::EndpointUri::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_transport::target::EndpointUri
+pub type radroots_transport::target::EndpointUri::Err = radroots_transport::error::Error
+pub fn radroots_transport::target::EndpointUri::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::target::EndpointUri
+pub fn radroots_transport::target::EndpointUri::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::target::Target
+impl radroots_transport::target::Target
+pub fn radroots_transport::target::Target::fingerprint(&self) -> &radroots_transport::target::TargetFingerprint
+pub fn radroots_transport::target::Target::kind(&self) -> &radroots_transport::TransportId
+pub fn radroots_transport::target::Target::label(&self) -> core::option::Option<&radroots_transport::target::TargetLabel>
+pub fn radroots_transport::target::Target::local(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::local_with_metadata(impl core::convert::AsRef<str>, core::option::Option<radroots_transport::target::TargetScope>, core::option::Option<radroots_transport::target::TargetLabel>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::new(radroots_transport::TransportId, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::new_with_metadata(radroots_transport::TransportId, impl core::convert::AsRef<str>, core::option::Option<radroots_transport::target::TargetScope>, core::option::Option<radroots_transport::target::TargetLabel>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::nostr_relay(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::nostr_relay_with_metadata(impl core::convert::AsRef<str>, core::option::Option<radroots_transport::target::TargetScope>, core::option::Option<radroots_transport::target::TargetLabel>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::scope(&self) -> core::option::Option<&radroots_transport::target::TargetScope>
+pub fn radroots_transport::target::Target::uri(&self) -> &radroots_transport::target::EndpointUri
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::target::Target
+pub fn radroots_transport::target::Target::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::target::TargetFingerprint(_)
+impl radroots_transport::target::TargetFingerprint
+pub fn radroots_transport::target::TargetFingerprint::as_str(&self) -> &str
+pub fn radroots_transport::target::TargetFingerprint::from_target(&radroots_transport::TransportId, &radroots_transport::target::EndpointUri, core::option::Option<&radroots_transport::target::TargetScope>) -> Self
+pub fn radroots_transport::target::TargetFingerprint::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl core::convert::AsRef<str> for radroots_transport::target::TargetFingerprint
+pub fn radroots_transport::target::TargetFingerprint::as_ref(&self) -> &str
+impl core::convert::TryFrom<&str> for radroots_transport::target::TargetFingerprint
+pub type radroots_transport::target::TargetFingerprint::Error = radroots_transport::error::Error
+pub fn radroots_transport::target::TargetFingerprint::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_transport::target::TargetFingerprint
+pub fn radroots_transport::target::TargetFingerprint::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_transport::target::TargetFingerprint
+pub type radroots_transport::target::TargetFingerprint::Err = radroots_transport::error::Error
+pub fn radroots_transport::target::TargetFingerprint::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::target::TargetFingerprint
+pub fn radroots_transport::target::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_transport::target::TargetLabel(_)
+impl radroots_transport::target::TargetLabel
+pub fn radroots_transport::target::TargetLabel::as_str(&self) -> &str
+pub fn radroots_transport::target::TargetLabel::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl core::convert::AsRef<str> for radroots_transport::target::TargetLabel
+pub fn radroots_transport::target::TargetLabel::as_ref(&self) -> &str
+impl core::convert::TryFrom<&str> for radroots_transport::target::TargetLabel
+pub type radroots_transport::target::TargetLabel::Error = radroots_transport::error::Error
+pub fn radroots_transport::target::TargetLabel::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_transport::target::TargetLabel
+pub fn radroots_transport::target::TargetLabel::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_transport::target::TargetLabel
+pub type radroots_transport::target::TargetLabel::Err = radroots_transport::error::Error
+pub fn radroots_transport::target::TargetLabel::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::target::TargetLabel
+pub fn radroots_transport::target::TargetLabel::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::target::TargetScope(_)
+impl radroots_transport::target::TargetScope
+pub fn radroots_transport::target::TargetScope::as_str(&self) -> &str
+pub fn radroots_transport::target::TargetScope::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl core::convert::AsRef<str> for radroots_transport::target::TargetScope
+pub fn radroots_transport::target::TargetScope::as_ref(&self) -> &str
+impl core::convert::TryFrom<&str> for radroots_transport::target::TargetScope
+pub type radroots_transport::target::TargetScope::Error = radroots_transport::error::Error
+pub fn radroots_transport::target::TargetScope::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_transport::target::TargetScope
+pub fn radroots_transport::target::TargetScope::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_transport::target::TargetScope
+pub type radroots_transport::target::TargetScope::Err = radroots_transport::error::Error
+pub fn radroots_transport::target::TargetScope::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::target::TargetScope
+pub fn radroots_transport::target::TargetScope::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::target::TargetSet
+impl radroots_transport::target::TargetSet
+pub fn radroots_transport::target::TargetSet::contains(&self, &radroots_transport::target::TargetFingerprint) -> bool
+pub fn radroots_transport::target::TargetSet::is_empty(&self) -> bool
+pub fn radroots_transport::target::TargetSet::len(&self) -> usize
+pub fn radroots_transport::target::TargetSet::new(alloc::vec::Vec<radroots_transport::target::Target>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::TargetSet::targets(&self) -> &[radroots_transport::target::Target]
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::target::TargetSet
+pub fn radroots_transport::target::TargetSet::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub const radroots_transport::target::TARGET_SET_MAX_ITEMS: usize
+pub enum radroots_transport::Error
+pub radroots_transport::Error::DeliveryReceiptRequestIdMismatch
+pub radroots_transport::Error::DeliveryReceiptTargetSetMismatch
+pub radroots_transport::Error::DeliveryTargetReceiptAttemptMismatch
+pub radroots_transport::Error::DeliveryTargetReceiptStatusMismatch
+pub radroots_transport::Error::DuplicateDeliveryTargetReceipt
+pub radroots_transport::Error::DuplicateFetchAuthor
+pub radroots_transport::Error::DuplicateFetchKind
+pub radroots_transport::Error::DuplicateFetchTargetOutcome
+pub radroots_transport::Error::DuplicateRequiredTargetFingerprint
+pub radroots_transport::Error::DuplicateTargetFingerprint
+pub radroots_transport::Error::EmptyDeliveryRequestId
+pub radroots_transport::Error::EmptyFetchCursor
+pub radroots_transport::Error::EmptyFetchRequestId
+pub radroots_transport::Error::EmptyPayloadBytes
+pub radroots_transport::Error::EmptyPayloadId
+pub radroots_transport::Error::EmptyPayloadLabel
+pub radroots_transport::Error::EmptyRequiredTargetSet
+pub radroots_transport::Error::EmptyTargetLabel
+pub radroots_transport::Error::EmptyTargetScope
+pub radroots_transport::Error::EmptyTargetSet
+pub radroots_transport::Error::EmptyTargetUri
+pub radroots_transport::Error::EmptyTransportKind
+pub radroots_transport::Error::FetchPageLimitExceeded
+pub radroots_transport::Error::FetchPageRequestMismatch
+pub radroots_transport::Error::FetchSelectorTooLarge
+pub radroots_transport::Error::InvalidDeliveryDeadline
+pub radroots_transport::Error::InvalidDeliveryOutcome
+pub radroots_transport::Error::InvalidDeliveryRequestId
+pub radroots_transport::Error::InvalidDeliveryTimestamp
+pub radroots_transport::Error::InvalidFetchCursor
+pub radroots_transport::Error::InvalidFetchDeadline
+pub radroots_transport::Error::InvalidFetchLimit
+pub radroots_transport::Error::InvalidFetchRequestId
+pub radroots_transport::Error::InvalidFetchTimeRange
+pub radroots_transport::Error::InvalidObservedAt
+pub radroots_transport::Error::InvalidPayloadBytes
+pub radroots_transport::Error::InvalidPayloadDigest
+pub radroots_transport::Error::InvalidPayloadId
+pub radroots_transport::Error::InvalidPayloadLabel
+pub radroots_transport::Error::InvalidSatisfactionPolicy
+pub radroots_transport::Error::InvalidTargetFingerprint
+pub radroots_transport::Error::InvalidTargetLabel
+pub radroots_transport::Error::InvalidTargetScope
+pub radroots_transport::Error::InvalidTargetUri
+pub radroots_transport::Error::InvalidTransportKind
+pub radroots_transport::Error::MissingDeliveryTargetReceipt
+pub radroots_transport::Error::PayloadDigestMismatch
+pub radroots_transport::Error::RequiredTargetNotRequested
+pub radroots_transport::Error::TargetSetTooLarge
+pub radroots_transport::Error::TransportOutcomeStatusMismatch
+pub radroots_transport::Error::UnexpectedDeliveryTargetReceipt
+pub radroots_transport::Error::UnexpectedFetchEvent
+pub radroots_transport::Error::UnexpectedFetchProvenance
+pub radroots_transport::Error::UnexpectedFetchTargetOutcome
+pub radroots_transport::Error::UnsupportedOperation
+impl core::fmt::Display for radroots_transport::error::Error
+pub fn radroots_transport::error::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_transport::DeliveryReceipt
+impl radroots_transport::sink::DeliveryReceipt
+pub fn radroots_transport::sink::DeliveryReceipt::for_request(&radroots_transport::sink::DeliveryRequest, alloc::vec::Vec<radroots_transport::sink::DeliveryTargetReceipt>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::sink::DeliveryReceipt::is_satisfied(&self, &radroots_transport::sink::DeliveryRequest) -> core::result::Result<bool, radroots_transport::error::Error>
+pub const fn radroots_transport::sink::DeliveryReceipt::request_id(&self) -> &radroots_transport::sink::DeliveryRequestId
+pub fn radroots_transport::sink::DeliveryReceipt::satisfaction(&self, &radroots_transport::sink::DeliveryRequest) -> core::result::Result<radroots_transport::policy::SatisfactionState, radroots_transport::error::Error>
+pub fn radroots_transport::sink::DeliveryReceipt::target_receipts(&self) -> &[radroots_transport::sink::DeliveryTargetReceipt]
+pub fn radroots_transport::sink::DeliveryReceipt::validate_for_request(&self, &radroots_transport::sink::DeliveryRequest) -> core::result::Result<(), radroots_transport::error::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::sink::DeliveryReceipt
+pub fn radroots_transport::sink::DeliveryReceipt::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::DeliveryRequest
+impl radroots_transport::sink::DeliveryRequest
+pub const fn radroots_transport::sink::DeliveryRequest::deadline_unix_ms(&self) -> u64
+pub fn radroots_transport::sink::DeliveryRequest::new(impl core::convert::Into<alloc::string::String>, radroots_transport::sink::DeliveryPayload, radroots_transport::target::TargetSet, radroots_transport::policy::SatisfactionPolicy, u64) -> core::result::Result<Self, radroots_transport::error::Error>
+pub const fn radroots_transport::sink::DeliveryRequest::payload(&self) -> &radroots_transport::sink::DeliveryPayload
+pub const fn radroots_transport::sink::DeliveryRequest::request_id(&self) -> &radroots_transport::sink::DeliveryRequestId
+pub const fn radroots_transport::sink::DeliveryRequest::satisfaction(&self) -> &radroots_transport::policy::SatisfactionPolicy
+pub const fn radroots_transport::sink::DeliveryRequest::target_set(&self) -> &radroots_transport::target::TargetSet
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::sink::DeliveryRequest
+pub fn radroots_transport::sink::DeliveryRequest::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::FetchPage
+impl radroots_transport::source::FetchPage
+pub fn radroots_transport::source::FetchPage::events(&self) -> &[radroots_transport::source::ObservedEvent]
+pub fn radroots_transport::source::FetchPage::for_request(&radroots_transport::source::FetchRequest, alloc::vec::Vec<radroots_transport::source::ObservedEvent>, alloc::vec::Vec<radroots_transport::outcome::FetchTargetOutcome>, radroots_transport::source::NextPage) -> core::result::Result<Self, radroots_transport::error::Error>
+pub const fn radroots_transport::source::FetchPage::next_page(&self) -> &radroots_transport::source::NextPage
+pub const fn radroots_transport::source::FetchPage::request_id(&self) -> &radroots_transport::source::FetchRequestId
+pub fn radroots_transport::source::FetchPage::target_outcomes(&self) -> &[radroots_transport::outcome::FetchTargetOutcome]
+pub fn radroots_transport::source::FetchPage::validate(&self) -> core::result::Result<(), radroots_transport::error::Error>
+pub fn radroots_transport::source::FetchPage::validate_for_request(&self, &radroots_transport::source::FetchRequest) -> core::result::Result<(), radroots_transport::error::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::source::FetchPage
+pub fn radroots_transport::source::FetchPage::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::FetchRequest
+impl radroots_transport::source::FetchRequest
+pub const fn radroots_transport::source::FetchRequest::bounds(&self) -> radroots_transport::source::FetchBounds
+pub fn radroots_transport::source::FetchRequest::cursor(&self) -> core::option::Option<&radroots_transport::source::FetchCursor>
+pub fn radroots_transport::source::FetchRequest::new(impl core::convert::Into<alloc::string::String>, radroots_transport::target::TargetSet, radroots_transport::source::FetchBounds) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::source::FetchRequest::request_id(&self) -> &radroots_transport::source::FetchRequestId
+pub const fn radroots_transport::source::FetchRequest::selector(&self) -> &radroots_transport::source::FetchSelector
+pub fn radroots_transport::source::FetchRequest::target_set(&self) -> &radroots_transport::target::TargetSet
+pub fn radroots_transport::source::FetchRequest::with_cursor(self, radroots_transport::source::FetchCursor) -> Self
+pub fn radroots_transport::source::FetchRequest::with_selector(self, radroots_transport::source::FetchSelector) -> Self
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::source::FetchRequest
+pub fn radroots_transport::source::FetchRequest::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::SinkFailure
+impl radroots_transport::sink::SinkFailure
+pub fn radroots_transport::sink::SinkFailure::code(&self) -> &str
+pub fn radroots_transport::sink::SinkFailure::for_request(&radroots_transport::sink::DeliveryRequest, impl core::convert::Into<alloc::string::String>, radroots_transport::outcome::Retryability, core::option::Option<u64>, core::option::Option<alloc::string::String>, alloc::vec::Vec<radroots_transport::sink::DeliveryTargetReceipt>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::sink::SinkFailure::invalid_contract(&radroots_transport::sink::DeliveryRequest) -> Self
+pub fn radroots_transport::sink::SinkFailure::message(&self) -> core::option::Option<&str>
+pub fn radroots_transport::sink::SinkFailure::partial_evidence(&self) -> &[radroots_transport::sink::DeliveryTargetReceipt]
+pub const fn radroots_transport::sink::SinkFailure::retry_after_unix_ms(&self) -> core::option::Option<u64>
+pub const fn radroots_transport::sink::SinkFailure::retryability(&self) -> radroots_transport::outcome::Retryability
+pub fn radroots_transport::sink::SinkFailure::validate_for_request(&self, &radroots_transport::sink::DeliveryRequest) -> core::result::Result<(), radroots_transport::error::Error>
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::sink::SinkFailure
+pub fn radroots_transport::sink::SinkFailure::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::SinkStatus
+impl radroots_transport::SinkStatus
+pub const fn radroots_transport::SinkStatus::availability(&self) -> radroots_transport::capability::Availability
+pub const fn radroots_transport::SinkStatus::capabilities(&self) -> radroots_transport::capability::SinkCapabilities
+pub fn radroots_transport::SinkStatus::from_descriptor(&radroots_protocol::capability::v1::TransportDescriptor, bool, impl core::convert::Into<alloc::string::String>) -> Self
+pub const fn radroots_transport::SinkStatus::is_configured(&self) -> bool
+pub const fn radroots_transport::SinkStatus::maturity(&self) -> radroots_transport::capability::Maturity
+pub fn radroots_transport::SinkStatus::message(&self) -> &str
+pub fn radroots_transport::SinkStatus::new(radroots_transport::TransportId, bool, radroots_transport::capability::Maturity, radroots_transport::capability::Availability, radroots_transport::capability::SinkCapabilities, impl core::convert::Into<alloc::string::String>) -> Self
+pub const fn radroots_transport::SinkStatus::transport_id(&self) -> radroots_transport::TransportId
+pub struct radroots_transport::SourceStatus
+impl radroots_transport::SourceStatus
+pub const fn radroots_transport::SourceStatus::availability(&self) -> radroots_transport::capability::Availability
+pub const fn radroots_transport::SourceStatus::capabilities(&self) -> radroots_transport::capability::SourceCapabilities
+pub fn radroots_transport::SourceStatus::from_descriptor(&radroots_protocol::capability::v1::TransportDescriptor, bool, impl core::convert::Into<alloc::string::String>) -> Self
+pub const fn radroots_transport::SourceStatus::is_configured(&self) -> bool
+pub const fn radroots_transport::SourceStatus::maturity(&self) -> radroots_transport::capability::Maturity
+pub fn radroots_transport::SourceStatus::message(&self) -> &str
+pub fn radroots_transport::SourceStatus::new(radroots_transport::TransportId, bool, radroots_transport::capability::Maturity, radroots_transport::capability::Availability, radroots_transport::capability::SourceCapabilities, impl core::convert::Into<alloc::string::String>) -> Self
+pub const fn radroots_transport::SourceStatus::transport_id(&self) -> radroots_transport::TransportId
+pub struct radroots_transport::Target
+impl radroots_transport::target::Target
+pub fn radroots_transport::target::Target::fingerprint(&self) -> &radroots_transport::target::TargetFingerprint
+pub fn radroots_transport::target::Target::kind(&self) -> &radroots_transport::TransportId
+pub fn radroots_transport::target::Target::label(&self) -> core::option::Option<&radroots_transport::target::TargetLabel>
+pub fn radroots_transport::target::Target::local(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::local_with_metadata(impl core::convert::AsRef<str>, core::option::Option<radroots_transport::target::TargetScope>, core::option::Option<radroots_transport::target::TargetLabel>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::new(radroots_transport::TransportId, impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::new_with_metadata(radroots_transport::TransportId, impl core::convert::AsRef<str>, core::option::Option<radroots_transport::target::TargetScope>, core::option::Option<radroots_transport::target::TargetLabel>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::nostr_relay(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::nostr_relay_with_metadata(impl core::convert::AsRef<str>, core::option::Option<radroots_transport::target::TargetScope>, core::option::Option<radroots_transport::target::TargetLabel>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::Target::scope(&self) -> core::option::Option<&radroots_transport::target::TargetScope>
+pub fn radroots_transport::target::Target::uri(&self) -> &radroots_transport::target::EndpointUri
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::target::Target
+pub fn radroots_transport::target::Target::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::TargetSet
+impl radroots_transport::target::TargetSet
+pub fn radroots_transport::target::TargetSet::contains(&self, &radroots_transport::target::TargetFingerprint) -> bool
+pub fn radroots_transport::target::TargetSet::is_empty(&self) -> bool
+pub fn radroots_transport::target::TargetSet::len(&self) -> usize
+pub fn radroots_transport::target::TargetSet::new(alloc::vec::Vec<radroots_transport::target::Target>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::target::TargetSet::targets(&self) -> &[radroots_transport::target::Target]
+impl<'de> serde_core::de::Deserialize<'de> for radroots_transport::target::TargetSet
+pub fn radroots_transport::target::TargetSet::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_transport::TransportId(_)
+impl radroots_transport::TransportId
+pub const radroots_transport::TransportId::LOCAL: Self
+pub const radroots_transport::TransportId::NOSTR: Self
+pub const radroots_transport::TransportId::RADROOTSD: Self
+pub const radroots_transport::TransportId::RETICULUM: Self
+pub fn radroots_transport::TransportId::as_str(&self) -> &str
+pub fn radroots_transport::TransportId::canonical_label(&self) -> alloc::string::String
+pub fn radroots_transport::TransportId::parse(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+pub fn radroots_transport::TransportId::parse_canonical(impl core::convert::AsRef<str>) -> core::result::Result<Self, radroots_transport::error::Error>
+impl core::convert::AsRef<str> for radroots_transport::TransportId
+pub fn radroots_transport::TransportId::as_ref(&self) -> &str
+impl core::convert::From<radroots_protocol::capability::v1::TransportKind> for radroots_transport::TransportId
+pub fn radroots_transport::TransportId::from(radroots_protocol::capability::v1::TransportKind) -> Self
+impl core::convert::From<radroots_transport::TransportId> for radroots_protocol::capability::v1::TransportKind
+pub fn radroots_protocol::capability::v1::TransportKind::from(radroots_transport::TransportId) -> Self
+impl core::convert::TryFrom<&str> for radroots_transport::TransportId
+pub type radroots_transport::TransportId::Error = radroots_transport::error::Error
+pub fn radroots_transport::TransportId::try_from(&str) -> core::result::Result<Self, Self::Error>
+impl core::convert::TryFrom<alloc::string::String> for radroots_transport::TransportId
+pub type radroots_transport::TransportId::Error = radroots_transport::error::Error
+pub fn radroots_transport::TransportId::try_from(alloc::string::String) -> core::result::Result<Self, Self::Error>
+impl core::fmt::Display for radroots_transport::TransportId
+pub fn radroots_transport::TransportId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl core::str::traits::FromStr for radroots_transport::TransportId
+pub type radroots_transport::TransportId::Err = radroots_transport::error::Error
+pub fn radroots_transport::TransportId::from_str(&str) -> core::result::Result<Self, Self::Err>
+impl serde_core::ser::Serialize for radroots_transport::TransportId
+pub fn radroots_transport::TransportId::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_transport::TransportId
+pub fn radroots_transport::TransportId::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub const radroots_transport::TARGET_SET_MAX_ITEMS: usize
+pub const radroots_transport::TRANSPORT_ID_MAX_BYTES: usize
+pub trait radroots_transport::EventSink: core::marker::Send + core::marker::Sync
+pub fn radroots_transport::EventSink::deliver(&self, radroots_transport::sink::DeliveryRequest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::sink::DeliveryReceipt, radroots_transport::sink::SinkFailure>>
+pub fn radroots_transport::EventSink::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::SinkStatus, radroots_transport::error::Error>>
+pub trait radroots_transport::EventSource: core::marker::Send + core::marker::Sync
+pub fn radroots_transport::EventSource::fetch(&self, radroots_transport::source::FetchRequest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::source::FetchPage, radroots_transport::error::Error>>
+pub fn radroots_transport::EventSource::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::SourceStatus, radroots_transport::error::Error>>
+pub type radroots_transport::BoxFuture<'a, T> = core::pin::Pin<alloc::boxed::Box<(dyn core::future::future::Future<Output = T> + core::marker::Send + 'a)>>
diff --git a/contracts/api_baselines/radroots_transport_nostr.txt b/contracts/api_baselines/radroots_transport_nostr.txt
@@ -0,0 +1,162 @@
+pub mod radroots_transport_nostr
+#[non_exhaustive] pub enum radroots_transport_nostr::Error
+pub radroots_transport_nostr::Error::AuthChallengeConflict
+pub radroots_transport_nostr::Error::AuthChallengeExpired
+pub radroots_transport_nostr::Error::AuthChallengeMissing
+pub radroots_transport_nostr::Error::AuthRejected
+pub radroots_transport_nostr::Error::AuthResponseInvalid
+pub radroots_transport_nostr::Error::AuthResponseMismatch
+pub radroots_transport_nostr::Error::AuthSignerUnavailable
+pub radroots_transport_nostr::Error::AuthStateUnavailable
+pub radroots_transport_nostr::Error::AuthTransport
+pub radroots_transport_nostr::Error::DuplicateRelayUrl
+pub radroots_transport_nostr::Error::DuplicateRelayUrl::url: alloc::string::String
+pub radroots_transport_nostr::Error::EmptyRelaySet
+pub radroots_transport_nostr::Error::EmptyResolution
+pub radroots_transport_nostr::Error::EmptyResolution::url: alloc::string::String
+pub radroots_transport_nostr::Error::InvalidAuthChallenge
+pub radroots_transport_nostr::Error::InvalidConnectionLimit
+pub radroots_transport_nostr::Error::InvalidConnectionLimit::value: usize
+pub radroots_transport_nostr::Error::InvalidReconnectBackoff
+pub radroots_transport_nostr::Error::InvalidReconnectBackoff::initial_delay_ms: u64
+pub radroots_transport_nostr::Error::InvalidReconnectBackoff::max_delay_ms: u64
+pub radroots_transport_nostr::Error::InvalidRelayCursor
+pub radroots_transport_nostr::Error::InvalidRelayUrl
+pub radroots_transport_nostr::Error::InvalidRelayUrl::reason: alloc::string::String
+pub radroots_transport_nostr::Error::InvalidRelayUrl::url: alloc::string::String
+pub radroots_transport_nostr::Error::InvalidTimeout
+pub radroots_transport_nostr::Error::InvalidTimeout::field: &'static str
+pub radroots_transport_nostr::Error::InvalidTimeout::value_ms: u64
+pub radroots_transport_nostr::Error::RelayDestinationDenied
+pub radroots_transport_nostr::Error::RelayDestinationDenied::reason: &'static str
+pub radroots_transport_nostr::Error::RelayDestinationDenied::url: alloc::string::String
+pub radroots_transport_nostr::Error::RelaySchemeDenied
+pub radroots_transport_nostr::Error::RelaySchemeDenied::url: alloc::string::String
+pub radroots_transport_nostr::Error::ResolvedAddressDenied
+pub radroots_transport_nostr::Error::ResolvedAddressDenied::address: alloc::string::String
+pub radroots_transport_nostr::Error::ResolvedAddressDenied::url: alloc::string::String
+pub radroots_transport_nostr::Error::Target(alloc::string::String)
+pub radroots_transport_nostr::Error::TooManyRelays
+pub radroots_transport_nostr::Error::TooManyRelays::actual: usize
+pub radroots_transport_nostr::Error::TooManyRelays::max: usize
+pub radroots_transport_nostr::Error::UnexpectedTransport
+pub radroots_transport_nostr::Error::UnexpectedTransport::actual: alloc::string::String
+impl core::error::Error for radroots_transport_nostr::Error
+impl core::fmt::Display for radroots_transport_nostr::Error
+pub fn radroots_transport_nostr::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+#[non_exhaustive] pub enum radroots_transport_nostr::RelayAccess
+pub radroots_transport_nostr::RelayAccess::ReadOnly
+pub radroots_transport_nostr::RelayAccess::ReadWrite
+impl radroots_transport_nostr::RelayAccess
+pub const fn radroots_transport_nostr::RelayAccess::can_read(self) -> bool
+pub const fn radroots_transport_nostr::RelayAccess::can_write(self) -> bool
+#[non_exhaustive] pub enum radroots_transport_nostr::RelayAggregateState
+pub radroots_transport_nostr::RelayAggregateState::Configured
+pub radroots_transport_nostr::RelayAggregateState::Connecting
+pub radroots_transport_nostr::RelayAggregateState::Degraded
+pub radroots_transport_nostr::RelayAggregateState::Failed
+pub radroots_transport_nostr::RelayAggregateState::Offline
+pub radroots_transport_nostr::RelayAggregateState::ReadOnly
+pub radroots_transport_nostr::RelayAggregateState::Writable
+#[non_exhaustive] pub enum radroots_transport_nostr::RelayEvidenceState
+pub radroots_transport_nostr::RelayEvidenceState::Available
+pub radroots_transport_nostr::RelayEvidenceState::Connecting
+pub radroots_transport_nostr::RelayEvidenceState::Unavailable
+pub radroots_transport_nostr::RelayEvidenceState::Unobserved
+pub radroots_transport_nostr::RelayEvidenceState::Unsupported
+#[non_exhaustive] pub enum radroots_transport_nostr::RelayProfileKind
+pub radroots_transport_nostr::RelayProfileKind::Device
+pub radroots_transport_nostr::RelayProfileKind::Public
+pub radroots_transport_nostr::RelayProfileKind::Simulator
+#[non_exhaustive] pub enum radroots_transport_nostr::RelayUrlPolicy
+pub radroots_transport_nostr::RelayUrlPolicy::Local
+pub radroots_transport_nostr::RelayUrlPolicy::PrivateNetwork
+pub radroots_transport_nostr::RelayUrlPolicy::Public
+pub struct radroots_transport_nostr::Config
+impl radroots_transport_nostr::Config
+pub const fn radroots_transport_nostr::Config::connect_timeout_ms(&self) -> u64
+pub fn radroots_transport_nostr::Config::endpoints(&self) -> &[radroots_transport_nostr::RelayEndpoint]
+pub fn radroots_transport_nostr::Config::from_profile(radroots_transport_nostr::RelayProfile) -> Self
+pub const fn radroots_transport_nostr::Config::max_connections(&self) -> usize
+pub const fn radroots_transport_nostr::Config::profile_kind(&self) -> radroots_transport_nostr::RelayProfileKind
+pub fn radroots_transport_nostr::Config::read_relays(&self) -> impl core::iter::traits::iterator::Iterator<Item = &radroots_transport_nostr::RelayUrl>
+pub const fn radroots_transport_nostr::Config::reconnect_backoff(&self) -> radroots_transport_nostr::ReconnectBackoff
+pub fn radroots_transport_nostr::Config::relays(&self) -> &[radroots_transport_nostr::RelayUrl]
+pub const fn radroots_transport_nostr::Config::request_timeout_ms(&self) -> u64
+pub const fn radroots_transport_nostr::Config::status_timeout_ms(&self) -> u64
+pub fn radroots_transport_nostr::Config::with_max_connections(self, usize) -> core::result::Result<Self, radroots_transport_nostr::Error>
+pub const fn radroots_transport_nostr::Config::with_reconnect_backoff(self, radroots_transport_nostr::ReconnectBackoff) -> Self
+pub fn radroots_transport_nostr::Config::with_timeouts(self, u64, u64, u64) -> core::result::Result<Self, radroots_transport_nostr::Error>
+pub fn radroots_transport_nostr::Config::write_relays(&self) -> impl core::iter::traits::iterator::Iterator<Item = &radroots_transport_nostr::RelayUrl>
+pub struct radroots_transport_nostr::NostrTransport
+impl radroots_transport_nostr::NostrTransport
+pub fn radroots_transport_nostr::NostrTransport::begin_authentication(&self, &radroots_transport_nostr::RelayUrl, impl core::convert::AsRef<str>, u64, u64) -> core::result::Result<alloc::string::String, radroots_transport_nostr::Error>
+pub fn radroots_transport_nostr::NostrTransport::complete_authentication<'a>(&'a self, &'a radroots_transport_nostr::RelayUrl, &'a str, core::option::Option<&'a str>, u64) -> radroots_transport::source::BoxFuture<'a, core::result::Result<(), radroots_transport_nostr::Error>>
+pub fn radroots_transport_nostr::NostrTransport::reject_authentication(&self, &radroots_transport_nostr::RelayUrl, &str) -> core::result::Result<(), radroots_transport_nostr::Error>
+impl radroots_transport_nostr::NostrTransport
+pub const fn radroots_transport_nostr::NostrTransport::config(&self) -> &radroots_transport_nostr::Config
+pub fn radroots_transport_nostr::NostrTransport::new(radroots_transport_nostr::Config) -> Self
+pub fn radroots_transport_nostr::NostrTransport::relay_status(&self) -> radroots_transport_nostr::RelayStatusReport
+impl core::fmt::Debug for radroots_transport_nostr::NostrTransport
+pub fn radroots_transport_nostr::NostrTransport::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl radroots_transport::sink::EventSink for radroots_transport_nostr::NostrTransport
+pub fn radroots_transport_nostr::NostrTransport::deliver(&self, radroots_transport::sink::DeliveryRequest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::sink::DeliveryReceipt, radroots_transport::sink::SinkFailure>>
+pub fn radroots_transport_nostr::NostrTransport::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::status::SinkStatus, radroots_transport::error::Error>>
+impl radroots_transport::source::EventSource for radroots_transport_nostr::NostrTransport
+pub fn radroots_transport_nostr::NostrTransport::fetch(&self, radroots_transport::source::FetchRequest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::source::FetchPage, radroots_transport::error::Error>>
+pub fn radroots_transport_nostr::NostrTransport::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_transport::status::SourceStatus, radroots_transport::error::Error>>
+pub struct radroots_transport_nostr::ReconnectBackoff
+impl radroots_transport_nostr::ReconnectBackoff
+pub const fn radroots_transport_nostr::ReconnectBackoff::initial_delay_ms(self) -> u64
+pub const fn radroots_transport_nostr::ReconnectBackoff::max_delay_ms(self) -> u64
+pub fn radroots_transport_nostr::ReconnectBackoff::new(u64, u64) -> core::result::Result<Self, radroots_transport_nostr::Error>
+impl core::default::Default for radroots_transport_nostr::ReconnectBackoff
+pub fn radroots_transport_nostr::ReconnectBackoff::default() -> Self
+pub struct radroots_transport_nostr::RelayCapabilityEvidence
+impl radroots_transport_nostr::RelayCapabilityEvidence
+pub const fn radroots_transport_nostr::RelayCapabilityEvidence::consecutive_failures(&self) -> u32
+pub const fn radroots_transport_nostr::RelayCapabilityEvidence::last_attempt_unix_ms(&self) -> core::option::Option<u64>
+pub const fn radroots_transport_nostr::RelayCapabilityEvidence::last_failure_retryable(&self) -> core::option::Option<bool>
+pub const fn radroots_transport_nostr::RelayCapabilityEvidence::last_success_unix_ms(&self) -> core::option::Option<u64>
+pub const fn radroots_transport_nostr::RelayCapabilityEvidence::next_attempt_unix_ms(&self) -> core::option::Option<u64>
+pub const fn radroots_transport_nostr::RelayCapabilityEvidence::state(&self) -> radroots_transport_nostr::RelayEvidenceState
+pub struct radroots_transport_nostr::RelayCursor
+impl radroots_transport_nostr::RelayCursor
+pub const fn radroots_transport_nostr::RelayCursor::created_at_unix_s(&self) -> u64
+pub fn radroots_transport_nostr::RelayCursor::event_id(&self) -> &str
+pub fn radroots_transport_nostr::RelayCursor::new(u64, impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_transport_nostr::Error>
+pub fn radroots_transport_nostr::RelayCursor::precedes(&self, u64, &str) -> bool
+pub struct radroots_transport_nostr::RelayEndpoint
+impl radroots_transport_nostr::RelayEndpoint
+pub const fn radroots_transport_nostr::RelayEndpoint::access(&self) -> radroots_transport_nostr::RelayAccess
+pub const fn radroots_transport_nostr::RelayEndpoint::policy(&self) -> radroots_transport_nostr::RelayUrlPolicy
+pub const fn radroots_transport_nostr::RelayEndpoint::url(&self) -> &radroots_transport_nostr::RelayUrl
+pub struct radroots_transport_nostr::RelayProfile
+impl radroots_transport_nostr::RelayProfile
+pub fn radroots_transport_nostr::RelayProfile::device<I, S>(I) -> core::result::Result<Self, radroots_transport_nostr::Error> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_transport_nostr::RelayProfile::endpoints(&self) -> &[radroots_transport_nostr::RelayEndpoint]
+pub const fn radroots_transport_nostr::RelayProfile::kind(&self) -> radroots_transport_nostr::RelayProfileKind
+pub fn radroots_transport_nostr::RelayProfile::public<I, S>(I) -> core::result::Result<Self, radroots_transport_nostr::Error> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub fn radroots_transport_nostr::RelayProfile::simulator<I, S>(I) -> core::result::Result<Self, radroots_transport_nostr::Error> where I: core::iter::traits::collect::IntoIterator<Item = S>, S: core::convert::AsRef<str>
+pub struct radroots_transport_nostr::RelayStatus
+impl radroots_transport_nostr::RelayStatus
+pub const fn radroots_transport_nostr::RelayStatus::endpoint(&self) -> &radroots_transport_nostr::RelayEndpoint
+pub const fn radroots_transport_nostr::RelayStatus::read(&self) -> &radroots_transport_nostr::RelayCapabilityEvidence
+pub const fn radroots_transport_nostr::RelayStatus::write(&self) -> &radroots_transport_nostr::RelayCapabilityEvidence
+pub struct radroots_transport_nostr::RelayStatusReport
+impl radroots_transport_nostr::RelayStatusReport
+pub const fn radroots_transport_nostr::RelayStatusReport::profile_kind(&self) -> radroots_transport_nostr::RelayProfileKind
+pub const fn radroots_transport_nostr::RelayStatusReport::read_availability(&self) -> radroots_transport::capability::Availability
+pub fn radroots_transport_nostr::RelayStatusReport::relays(&self) -> &[radroots_transport_nostr::RelayStatus]
+pub const fn radroots_transport_nostr::RelayStatusReport::state(&self) -> radroots_transport_nostr::RelayAggregateState
+pub const fn radroots_transport_nostr::RelayStatusReport::write_availability(&self) -> radroots_transport::capability::Availability
+pub struct radroots_transport_nostr::RelayUrl(_)
+impl radroots_transport_nostr::RelayUrl
+pub fn radroots_transport_nostr::RelayUrl::as_str(&self) -> &str
+pub fn radroots_transport_nostr::RelayUrl::from_target(&radroots_transport::target::Target, radroots_transport_nostr::RelayUrlPolicy) -> core::result::Result<Self, radroots_transport_nostr::Error>
+pub fn radroots_transport_nostr::RelayUrl::parse(impl core::convert::AsRef<str>, radroots_transport_nostr::RelayUrlPolicy) -> core::result::Result<Self, radroots_transport_nostr::Error>
+pub fn radroots_transport_nostr::RelayUrl::to_target(&self) -> core::result::Result<radroots_transport::target::Target, radroots_transport_nostr::Error>
+pub fn radroots_transport_nostr::RelayUrl::validate_resolved_addresses(&self, radroots_transport_nostr::RelayUrlPolicy, impl core::iter::traits::collect::IntoIterator<Item = core::net::ip_addr::IpAddr>) -> core::result::Result<(), radroots_transport_nostr::Error>
+impl core::fmt::Display for radroots_transport_nostr::RelayUrl
+pub fn radroots_transport_nostr::RelayUrl::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub const radroots_transport_nostr::DEFAULT_PUBLIC_RELAY: &str
diff --git a/contracts/architecture/decisions/public_api_leakage_migration_baseline.v1.toml b/contracts/architecture/decisions/public_api_leakage_migration_baseline.v1.toml
@@ -0,0 +1,39 @@
+schema_version = 1
+decision_id = "radroots.public_api_leakage_migration_baseline.v1"
+status = "accepted_historical"
+accepted_date = "2026-07-27"
+completed_step = 313
+publication_authorized = false
+exception_ids = [
+ "RCRV1-API-001",
+ "RCRV1-API-002",
+ "RCRV1-API-003",
+ "RCRV1-API-004",
+ "RCRV1-API-005",
+ "RCRV1-API-006",
+ "RCRV1-API-007",
+ "RCRV1-API-008",
+]
+active_exception_ids = []
+forbidden_expansion = [
+ "broader_aliases",
+ "keyring",
+ "new_items",
+ "new_upstream_paths",
+ "platform_specific_types",
+ "reqwest",
+ "sqlx",
+ "tokio",
+]
+
+[[removal_milestone]]
+package = "radroots_identity"
+step = 42
+
+[[removal_milestone]]
+package = "radroots_nostr"
+step = 124
+
+[[removal_milestone]]
+package = "radroots_nostr_connect"
+step = 140
diff --git a/contracts/architecture/deviations.toml b/contracts/architecture/deviations.toml
@@ -0,0 +1,327 @@
+schema_version = 1
+architecture_id = "radroots.crates.release.v1"
+
+[[deviation]]
+id = "RCRV1-DEV-001"
+date = "2026-07-27"
+status = "active"
+approval = "Explicit user correction dated 2026-07-27."
+affected_steps = [
+ "015",
+ "016",
+ "017",
+ "018",
+ "019",
+ "020",
+ "021",
+ "022",
+ "023",
+ "026",
+]
+spec_anchors = [
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#repositories.lib",
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#repository_policy",
+]
+source_evidence = [
+ "The final v1 specification allocates 17 public packages to radrootslabs/lib and 2 to radrootslabs/sdk.",
+ "Both existing repositories have independent histories, workspaces, lockfiles, remotes, and standalone release boundaries.",
+]
+replacement_action = "Retain the two existing standalone repositories; replace import and monorepo-unification work with independent workspace, lockfile, metadata, dependency, and release qualification."
+verification = [
+ "Both repository-local architecture validators resolve every spec anchor.",
+ "The synchronized architecture catalog enforces the exact 17/2 ownership partition.",
+ "Each standalone repository owns a required architecture CI adapter over its repository-local command surface.",
+]
+unresolved_risk = "Parent gitlinks cannot advance until the new standalone commits are public-remote reachable under separate authorization."
+normative_architecture_change = false
+adr_required = false
+
+[[deviation]]
+id = "RCRV1-DEV-010"
+date = "2026-08-03"
+status = "closed"
+approval = "All code-review recommendations and the full multi-RCLD implementation sequence were explicitly approved by the user."
+affected_steps = ["201", "215", "269", "294", "301", "313"]
+spec_anchors = [
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_transport_nostr",
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_transport",
+]
+source_evidence = [
+ "The Step 294 downstream matrix proved the former app_rt radroots_net_core consumer had migrated and no current first-party manifest retained an edge to radroots_net.",
+ "Step 301 full workspace qualification proved that the assigned radroots_nostr_runtime Step 215 deletion and radroots_net Step 313 deletion had not been applied even though both removal gates were satisfied.",
+ "Both obsolete packages failed against the final transport boundary when the complete all-feature workspace closure was checked.",
+]
+replacement_action = "Delete radroots_nostr_runtime, its NostrDB runtime adapter, and radroots_net during Step 301 qualification; forbid their package, dependency, alias, feature, and source identities from being reintroduced."
+verification = [
+ "Transport-owned tests reject reintroduction of radroots_nostr_runtime, radroots_net, or the NostrDB runtime-adapter feature.",
+ "Workspace-wide source tests reject every removed transport-client identifier without a compatibility exception.",
+ "The full all-target and all-feature workspace qualification compiles without either predecessor package.",
+]
+unresolved_risk = "None for the two removed packages; historical names remain only in governed specifications, migration evidence, and fail-closed regression assertions."
+normative_architecture_change = false
+adr_required = false
+closure_evidence = [
+ "crates/transport_nostr/tests/workspace_consumers.rs proves both package directories and workspace dependency identities are absent.",
+ "crates/transport_nostr/tests/legacy_quarantine.rs proves release policy and the compatibility ledger no longer classify either package as a retained shim.",
+]
+
+[[deviation]]
+id = "RCRV1-DEV-008"
+date = "2026-08-01"
+status = "closed"
+approval = "All code-review recommendations and the full multi-RCLD implementation sequence were explicitly approved by the user."
+affected_steps = ["153", "155", "171", "179", "226", "288", "293", "313"]
+spec_anchors = [
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_secrets",
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_storage_sqlite",
+]
+source_evidence = [
+ "The final radroots_storage_sqlite scaffold can consume radroots_secrets immediately and has no predecessor secret dependency.",
+ "Step 179, not Step 153, owns transfer of the current SDK private database and its encrypted records into canonical SQLite storage.",
+ "Mixed publish-frozen runtime, Nostr-account, SimpleX preview, SDK private-store, Myc, and other external hosts still require predecessor vault/store behavior until their ordered migration steps.",
+]
+replacement_action = "Activate the final radroots_storage_sqlite and SDK dependency edges in Step 153; confine predecessor vault/store imports to exact publish-frozen quarantine packages and the SDK private-store module; Step 179 transfers canonical private storage, Steps 226/288/293 migrate the remaining SDK and downstream consumers, and Step 313 removes every remaining compatibility package and legacy name."
+verification = [
+ "Consumer-migration tests enumerate every lib package manifest that still names radroots_secret_vault or radroots_protected_store and reject any unapproved or publishable consumer.",
+ "Storage SQLite package-boundary tests require radroots_secrets and reject all predecessor secret package names.",
+ "SDK source-boundary tests confine predecessor imports to private_store.rs and require the final optional radroots_secrets dependency edge.",
+ "Step 155 release-policy validation keeps every quarantine package non-publishable until its exact removal gate.",
+]
+unresolved_risk = "None; the predecessor packages and all active manifest consumers are absent."
+normative_architecture_change = false
+adr_required = false
+closure_evidence = [
+ "crates/secrets/tests/consumer_migration.rs rejects every predecessor package directory, workspace dependency, and active manifest reference.",
+ "Step 313 source census confirmed the SDK, Myc, CLI, and library runtime paths use only radroots_secrets and final storage owners.",
+]
+
+[[deviation]]
+id = "RCRV1-DEV-007"
+date = "2026-07-30"
+status = "closed"
+approval = "All code-review recommendations and the full multi-RCLD implementation sequence were explicitly approved by the user."
+affected_steps = ["122", "170", "215", "235", "305"]
+spec_anchors = [
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_transport",
+]
+source_evidence = [
+ "Step 120 migrated canonical adapters and registries to independent EventSource and EventSink contracts.",
+ "Mixed runtime delivery workers still consume predecessor request and receipt models until their ordered RCLD 40 migration.",
+ "The runtime delivery worker also accepts opaque byte payloads, while the final EventSink contract accepts only verified SignedEvent values; deleting the bridge at Step 170 would silently remove a supported private runtime path before sync orchestration owns that decision.",
+ "The standalone publish-frozen SDK still maps user-facing target and satisfaction models into predecessor outbox orchestration until Step 235.",
+ "oss/cli/src/runtime/{config,sync,transport}.rs and oss/radrootsd/src/core/transport_publish.rs still import the predecessor identity aliases and Reticulum target helpers; those standalone repositories are outside the approved crate-surface mutation scope.",
+]
+replacement_action = "Remove the monolithic trait from radroots_transport in Step 122; retain one explicitly named runtime-owned unpublished shim until Step 215 at the sync-orchestration retirement gate, the SDK-local unpublished target/satisfaction mapping until Step 235, and documentation-hidden external-consumer aliases/helpers until the fail-closed package-realistic Step 305 gate."
+verification = [
+ "Transport source-boundary tests reject every removed public predecessor name and require the singular runtime-owned shim.",
+ "Release policy keeps runtime and SDK publication disabled while either downstream shim exists.",
+ "Steps 215 and 235 are the exact fail-closed final-removal gates for the remaining runtime and SDK mappings.",
+ "Step 305 rejects publication until oss/cli and oss/radrootsd no longer require the documentation-hidden external-consumer aliases and Reticulum helpers.",
+]
+unresolved_risk = "None; final consumers use TransportId, Target, TargetScope, TargetLabel, and TargetFingerprint directly."
+normative_architecture_change = false
+adr_required = false
+closure_evidence = [
+ "crates/transport/tests/package_boundary.rs rejects the hidden Reticulum constructors, legacy constant spellings, and prefixed target aliases.",
+ "Step 313 source census confirmed every external-consumer alias and helper is absent after the daemon cutover to final transport identities.",
+]
+
+[[deviation]]
+id = "RCRV1-DEV-009"
+date = "2026-08-02"
+status = "closed"
+approval = "All code-review recommendations and the full multi-RCLD implementation sequence were explicitly approved by the user."
+affected_steps = [
+ "170",
+ "179",
+ "189",
+ "196",
+ "201",
+ "213",
+ "226",
+ "235",
+ "263",
+ "269",
+ "288",
+ "292",
+ "313",
+]
+spec_anchors = [
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_storage",
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_storage_sqlite",
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_sdk",
+]
+source_evidence = [
+ "The Step 170 first-party census found radroots_event_index consumers in the standalone CLI, SDK, SDK bindings, and indexer repositories.",
+ "The census found radroots_event_store and radroots_outbox consumers in the standalone CLI and SDK, plus active library transport_nostr orchestration scheduled to move in Step 196.",
+ "The census found radroots_runtime_store consumed by the standalone CLI, whose crate cutover is scheduled after the canonical library storage and sync implementations are complete.",
+ "Deleting these packages before their ordered migrations would make the independently buildable first-party repositories unresolvable and would remove the source data needed by the approved one-shot importer.",
+]
+replacement_action = "Keep radroots_event_index, radroots_event_store, radroots_outbox, and radroots_runtime_store as documentation-hidden publish-frozen compatibility packages with no new consumers; port durable behavior into radroots_storage_sqlite through Step 189, remove local transport coupling in Step 196, migrate library/SDK/binding/CLI/indexer consumers in their ordered steps, and delete every remaining package at Step 313."
+verification = [
+ "Package manifests carry machine-readable publish-frozen metadata naming the final replacement, deviation, Step 313 removal gate, and prohibition on new consumers.",
+ "A storage-owned quarantine test requires the four packages to remain private and absent from the approved publication inventory.",
+ "Workspace checks and tests prove current migration consumers remain buildable while publication stays frozen.",
+ "Step 313 performs the all-first-party forbidden-name search and final package deletion.",
+]
+unresolved_risk = "None; all four predecessor packages and their active dependency edges are absent."
+normative_architecture_change = false
+adr_required = false
+closure_evidence = [
+ "crates/storage_sqlite/tests/package_boundary.rs and crates/storage/tests/workspace_consumers.rs reject the four predecessor package identities.",
+ "Step 313 removed the final library packages, SDK runtime/event-index surfaces, and CLI source dependency branch after all standalone consumers migrated.",
+]
+
+[[deviation]]
+id = "RCRV1-DEV-005"
+date = "2026-07-28"
+status = "active"
+approval = "Explicit user Rust version-policy update dated 2026-07-28 17:47 UTC."
+affected_steps = [
+ "013",
+ "019",
+ "020",
+ "021",
+ "022",
+ "023",
+ "024",
+ "025",
+ "026",
+ "305",
+]
+spec_anchors = [
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#repositories.lib",
+]
+source_evidence = [
+ "The prior 1.0.0 and mixed 0.1.0 prerelease crate cohorts were explicitly declared incorrect.",
+ "The user requires every Rust crate in radrootslabs/lib to remain exactly 0.1.0-alpha until further explicit notice.",
+]
+replacement_action = "Pin every workspace package, lockfile entry, and internal Radroots dependency requirement in radrootslabs/lib to 0.1.0-alpha; preserve independent protocol and sibling-repository versions; reject library cohort drift until new explicit authority is recorded."
+verification = [
+ "Repository architecture validation rejects any workspace package version other than 0.1.0-alpha.",
+ "Internal Radroots dependency requirements resolve exactly to =0.1.0-alpha.",
+ "Synchronized release specifications record the library cohort independently from the SDK repository version.",
+]
+unresolved_risk = "The prerelease cohort intentionally prevents independent library package version advancement until a future explicit policy change."
+normative_architecture_change = false
+adr_required = false
+
+[[deviation]]
+id = "RCRV1-DEV-002"
+date = "2026-07-27"
+status = "active"
+approval = "Explicit user correction dated 2026-07-27."
+affected_steps = ["249"]
+spec_anchors = [
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots",
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#repositories.sdk",
+]
+source_evidence = [
+ "The final v1 specification assigns the radroots facade to the existing sdk repository.",
+ "The approved sequence requires radroots to be the first crate-surface mutation after architecture controls are green.",
+]
+replacement_action = "Scaffold radroots in the sdk repository immediately after Step 014, then execute Steps 250-260 in their original order without repeating the scaffold portion of Step 249."
+verification = [
+ "The sdk release policy reserves radroots as an approved local package while publication remains frozen.",
+ "The facade scaffold checkpoint must add radroots only to the sdk workspace and architecture policy.",
+]
+unresolved_risk = "The facade remains non-publishable until the package-realistic Step 305 enablement gate."
+normative_architecture_change = false
+adr_required = false
+
+[[deviation]]
+id = "RCRV1-DEV-004"
+date = "2026-07-28"
+status = "active"
+approval = "Explicit user coverage-policy update dated 2026-07-28 17:15 UTC."
+affected_steps = [
+ "098",
+ "155",
+ "225",
+ "260",
+ "268",
+ "294",
+ "298",
+ "299",
+ "301",
+ "302",
+ "303",
+ "304",
+ "314",
+]
+spec_anchors = [
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#quality_policy.coverage",
+]
+source_evidence = [
+ "The oss/lib codebase is under heavy development during the multi-RCLD refactor.",
+ "The user explicitly replaced the active 100% coverage requirement with a uniform 90% module requirement.",
+]
+replacement_action = "Enforce 90% executable-line, function, region, and branch coverage for every required oss/lib crate; retain only no-branch-record exceptions; defer restoration of 100% until an explicit future contract update after refactor stabilization."
+verification = [
+ "Contract validation rejects any base coverage dimension other than 90% or disabled required branches.",
+ "Coverage policy-gate tests prove values below 90% fail and values at or above 90% pass.",
+ "The required-crate inventory remains complete and crate-specific numeric thresholds below 90% remain forbidden.",
+]
+unresolved_risk = "A 90% development gate admits untested paths that a later 100% gate would reject; the final restoration remains intentionally unscheduled pending explicit authority."
+normative_architecture_change = false
+adr_required = false
+
+[[deviation]]
+id = "RCRV1-DEV-011"
+date = "2026-08-03"
+status = "closed"
+approval = "All code-review recommendations and the full multi-RCLD implementation sequence were explicitly approved by the user."
+affected_steps = ["225", "226", "248"]
+spec_anchors = [
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_geonames",
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_sdk",
+]
+source_evidence = [
+ "The standalone SDK manifest and GeoNames module still resolve radroots_geocoder and its test-fixture feature while the final provider package is implemented in this independently versioned repository.",
+ "The legacy package has no in-repository consumer, is publish disabled, and is already excluded from the exact release-v1 public package inventory.",
+ "Deleting the package at Step 225 would make the independently buildable SDK repository unresolvable before its ordered manifest and API cutover begins at Step 226.",
+]
+replacement_action = "Keep radroots_geocoder as a documentation-marked, machine-classified publish-frozen bridge with no new consumers, features, contracts, or behavior; migrate the standalone SDK to radroots_geonames beginning at Step 226 and delete the bridge at the SDK retirement gate in Step 248."
+verification = [
+ "The predecessor manifest names radroots_geonames as its replacement, RCRV1-DEV-011 as authority, and Step 248 as the exact removal gate.",
+ "GeoNames package quarantine tests require the predecessor to remain private and absent from the approved publication inventory while the SDK source census remains non-empty.",
+ "Step 248 must reject every remaining package, dependency, feature, import, and error-adapter reference to radroots_geocoder before deletion.",
+]
+unresolved_risk = "None; the SDK consumes radroots_geonames and the predecessor package is absent."
+normative_architecture_change = false
+adr_required = false
+closure_evidence = [
+ "crates/geonames/tests/package_boundary.rs rejects the superseded package directory and release-policy identity.",
+ "The SDK Step 248 checkpoint removed every radroots_geocoder dependency, feature, import, and error-adapter reference.",
+]
+
+[[deviation]]
+id = "RCRV1-DEV-012"
+date = "2026-08-03"
+status = "closed"
+approval = "All code-review recommendations and the full multi-RCLD implementation sequence were explicitly approved by the user."
+affected_steps = ["279", "282", "283"]
+spec_anchors = [
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_transport",
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_transport_nostr",
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml#package.radroots_sdk",
+]
+source_evidence = [
+ "The first-party mobile compile gate proved that its real relay-backed identity, profile, and post operations had no equivalent after the initial shared-engine bridge cutover.",
+ "The generic source request could bound pages and targets but could not express event kind, author, or event-time constraints required for correct profile and feed queries.",
+ "Restoring the retired parallel runtime or accepting client-side filtering after page truncation would violate the final SDK and transport ownership model.",
+]
+replacement_action = "Before qualifying the mobile artifact, add bounded transport-neutral fetch selectors, translate them in the concrete Nostr adapter, complete SDK-owned explicit local-signing and Nostr composition, and map the mobile presentation contract over those SDK operations without restoring direct lower-package dependencies."
+verification = [
+ "Transport selector construction rejects oversized, duplicate, and reversed-range inputs and binds selectors into page validation.",
+ "The Nostr adapter applies kind, author, and time constraints remotely and defensively filters returned events before page bounds.",
+ "The shared-engine SDK and mobile integration gates must pass before Steps 282 and 283 are marked complete.",
+]
+unresolved_risk = "None; the shared-engine and mobile qualification checkpoints completed with the final selector and SDK ownership model."
+normative_architecture_change = false
+adr_required = false
+closure_evidence = [
+ "crates/transport/tests/source_contract.rs verifies bounded canonical selector construction and request binding.",
+ "crates/transport_nostr/src/source.rs tests remote selector translation and defensive result filtering before page bounds.",
+ "Steps 282 and 283 qualified the SDK-owned signing, Nostr composition, and mobile presentation bridge without lower-package ownership leakage.",
+]
diff --git a/contracts/architecture/retired_compatibility.v1.toml b/contracts/architecture/retired_compatibility.v1.toml
@@ -0,0 +1,43 @@
+schema_version = 1
+contract_id = "radroots.retired_compatibility.v1"
+status = "enforced"
+
+[[retired_bridge]]
+id = "radroots_authority"
+final_owners = ["radroots_signing"]
+removal_step = 313
+
+[[retired_bridge]]
+id = "radroots_geocoder"
+final_owners = ["radroots_geonames"]
+removal_step = 313
+
+[[retired_bridge]]
+id = "radroots_net"
+final_owners = ["radroots_transport"]
+removal_step = 301
+
+[[retired_bridge]]
+id = "radroots_nostr_connect_hidden_prelude"
+final_owners = ["radroots_nostr_connect"]
+removal_step = 313
+
+[[retired_bridge]]
+id = "radroots_nostr_connect_prefixed_client_bridge"
+final_owners = ["radroots_nostr_connect"]
+removal_step = 313
+
+[[retired_bridge]]
+id = "radroots_nostr_signer"
+final_owners = ["radroots_nostr_connect", "radroots_signing"]
+removal_step = 313
+
+[[retired_bridge]]
+id = "radroots_nostr_runtime"
+final_owners = ["radroots_transport_nostr"]
+removal_step = 301
+
+[[retired_bridge]]
+id = "nostrdb_runtime_adapter"
+final_owners = ["radroots_storage_sqlite"]
+removal_step = 301
diff --git a/contracts/crates/release.v2.toml b/contracts/crates/release.v2.toml
@@ -1,4 +1,4 @@
-schema_version = 1
+schema_version = 2
spec_id = "radroots.crates.release.v2"
status = "approved_not_published"
supersedes_without_mutation = "radroots.crates.release.v1"
@@ -28,22 +28,22 @@ public_packages = [
"radroots",
]
-[[v1_artifact]]
-path = "docs/specs/radroots_crates_release_v1.md"
+[[v1_retired_human_artifact]]
+former_path = "docs/specs/radroots_crates_release_v1.md"
sha256 = "ea2c1f0f5c53fae56a247ae7519b065c9a0d62dafb998b75a48075f4a875b5eb"
[[v1_artifact]]
-path = "docs/specs/radroots_crates_release_v1.toml"
+path = "contracts/crates/release_v1/radroots_crates_release_v1.toml"
sha256 = "1dc18437200dcd65b52090493306f452dade89b5116401d71be4ba4127239b19"
[[v1_artifact]]
-path = "docs/specs/radroots_crates_release_v1_inventory.csv"
+path = "contracts/crates/release_v1/radroots_crates_release_v1_inventory.csv"
sha256 = "5020875c2cda4b2c9568c8b3f0fad5cd96756c3c779a72481a9652e558f77891"
[[v1_artifact]]
-path = "docs/specs/radroots_crates_release_v1.dot"
+path = "contracts/crates/release_v1/radroots_crates_release_v1.dot"
sha256 = "d47de10be596a4d33fee102a4f0617f66700b49515a75a1f42d62c9710043059"
[[v1_artifact]]
-path = "docs/specs/radroots_crates_release_v1.sha256"
+path = "contracts/crates/release_v1/radroots_crates_release_v1.sha256"
sha256 = "5759ceaae30a9435346320c2791cfda9eb1559b779ea79fd2e94810e14efa281"
diff --git a/contracts/crates/release_v1/radroots_crates_release_v1.dot b/contracts/crates/release_v1/radroots_crates_release_v1.dot
@@ -0,0 +1,102 @@
+digraph radroots_crates_release_v1 {
+ rankdir="BT";
+ graph [label="Radroots Crates Release V1", labelloc="t", fontsize=20];
+ node [fontname="Helvetica"];
+ "radroots_core" [shape=ellipse];
+ "radroots_identity" [shape=ellipse];
+ "radroots_blossom" [shape=ellipse];
+ "radroots_protocol" [shape=component];
+ "radroots_event" [shape=box];
+ "radroots_event_codec" [shape=box];
+ "radroots_trade" [shape=box];
+ "radroots_signing" [shape=hexagon];
+ "radroots_transport" [shape=hexagon];
+ "radroots_nostr" [shape=component];
+ "radroots_nostr_connect" [shape=component];
+ "radroots_secrets" [shape=hexagon];
+ "radroots_storage" [shape=hexagon];
+ "radroots_storage_sqlite" [shape=cylinder];
+ "radroots_transport_nostr" [shape=component];
+ "radroots_sync" [shape=box3d];
+ "radroots_geonames" [shape=component];
+ "radroots_sdk" [shape=doubleoctagon];
+ "radroots" [shape=doubleoctagon];
+ subgraph cluster_lib {
+ label="radrootslabs/lib (packages 1-17)";
+ "radroots_core"; "radroots_identity"; "radroots_blossom";
+ "radroots_protocol"; "radroots_event"; "radroots_event_codec";
+ "radroots_trade"; "radroots_signing"; "radroots_transport";
+ "radroots_nostr"; "radroots_nostr_connect"; "radroots_secrets";
+ "radroots_storage"; "radroots_storage_sqlite";
+ "radroots_transport_nostr"; "radroots_sync"; "radroots_geonames";
+ }
+ subgraph cluster_sdk {
+ label="radrootslabs/sdk (packages 18-19)";
+ "radroots_sdk"; "radroots";
+ }
+ "radroots_event" -> "radroots_blossom" [style=solid, label="required"];
+ "radroots_event" -> "radroots_core" [style=solid, label="required"];
+ "radroots_event" -> "radroots_identity" [style=solid, label="required"];
+ "radroots_event" -> "radroots_protocol" [style=solid, label="required"];
+ "radroots_event_codec" -> "radroots_blossom" [style=solid, label="required"];
+ "radroots_event_codec" -> "radroots_event" [style=solid, label="required"];
+ "radroots_event_codec" -> "radroots_protocol" [style=solid, label="required"];
+ "radroots_trade" -> "radroots_core" [style=solid, label="required"];
+ "radroots_trade" -> "radroots_event" [style=solid, label="required"];
+ "radroots_trade" -> "radroots_identity" [style=solid, label="required"];
+ "radroots_signing" -> "radroots_event" [style=solid, label="required"];
+ "radroots_signing" -> "radroots_identity" [style=solid, label="required"];
+ "radroots_signing" -> "radroots_protocol" [style=solid, label="required"];
+ "radroots_transport" -> "radroots_event" [style=solid, label="required"];
+ "radroots_transport" -> "radroots_identity" [style=solid, label="required"];
+ "radroots_transport" -> "radroots_protocol" [style=solid, label="required"];
+ "radroots_nostr" -> "radroots_blossom" [style=dashed, label="optional"];
+ "radroots_nostr" -> "radroots_signing" [style=dashed, label="optional"];
+ "radroots_nostr" -> "radroots_event" [style=solid, label="required"];
+ "radroots_nostr" -> "radroots_event_codec" [style=solid, label="required"];
+ "radroots_nostr" -> "radroots_identity" [style=solid, label="required"];
+ "radroots_nostr_connect" -> "radroots_event" [style=solid, label="required"];
+ "radroots_nostr_connect" -> "radroots_identity" [style=solid, label="required"];
+ "radroots_nostr_connect" -> "radroots_nostr" [style=solid, label="required"];
+ "radroots_nostr_connect" -> "radroots_protocol" [style=solid, label="required"];
+ "radroots_storage" -> "radroots_event" [style=solid, label="required"];
+ "radroots_storage" -> "radroots_protocol" [style=solid, label="required"];
+ "radroots_storage" -> "radroots_trade" [style=solid, label="required"];
+ "radroots_storage" -> "radroots_transport" [style=solid, label="required"];
+ "radroots_storage_sqlite" -> "radroots_event_codec" [style=solid, label="required"];
+ "radroots_storage_sqlite" -> "radroots_secrets" [style=solid, label="required"];
+ "radroots_storage_sqlite" -> "radroots_storage" [style=solid, label="required"];
+ "radroots_transport_nostr" -> "radroots_event_codec" [style=solid, label="required"];
+ "radroots_transport_nostr" -> "radroots_nostr" [style=solid, label="required"];
+ "radroots_transport_nostr" -> "radroots_protocol" [style=solid, label="required"];
+ "radroots_transport_nostr" -> "radroots_transport" [style=solid, label="required"];
+ "radroots_sync" -> "radroots_event" [style=solid, label="required"];
+ "radroots_sync" -> "radroots_event_codec" [style=solid, label="required"];
+ "radroots_sync" -> "radroots_protocol" [style=solid, label="required"];
+ "radroots_sync" -> "radroots_signing" [style=solid, label="required"];
+ "radroots_sync" -> "radroots_storage" [style=solid, label="required"];
+ "radroots_sync" -> "radroots_trade" [style=solid, label="required"];
+ "radroots_sync" -> "radroots_transport" [style=solid, label="required"];
+ "radroots_sdk" -> "radroots_geonames" [style=dashed, label="optional"];
+ "radroots_sdk" -> "radroots_nostr" [style=dashed, label="optional"];
+ "radroots_sdk" -> "radroots_nostr_connect" [style=dashed, label="optional"];
+ "radroots_sdk" -> "radroots_secrets" [style=dashed, label="optional"];
+ "radroots_sdk" -> "radroots_storage_sqlite" [style=dashed, label="optional"];
+ "radroots_sdk" -> "radroots_sync" [style=dashed, label="optional"];
+ "radroots_sdk" -> "radroots_transport_nostr" [style=dashed, label="optional"];
+ "radroots_sdk" -> "radroots_core" [style=solid, label="required"];
+ "radroots_sdk" -> "radroots_event" [style=solid, label="required"];
+ "radroots_sdk" -> "radroots_event_codec" [style=solid, label="required"];
+ "radroots_sdk" -> "radroots_identity" [style=solid, label="required"];
+ "radroots_sdk" -> "radroots_protocol" [style=solid, label="required"];
+ "radroots_sdk" -> "radroots_signing" [style=solid, label="required"];
+ "radroots_sdk" -> "radroots_storage" [style=solid, label="required"];
+ "radroots_sdk" -> "radroots_trade" [style=solid, label="required"];
+ "radroots_sdk" -> "radroots_transport" [style=solid, label="required"];
+ "radroots" -> "radroots_core" [style=solid, label="required"];
+ "radroots" -> "radroots_event" [style=solid, label="required"];
+ "radroots" -> "radroots_identity" [style=solid, label="required"];
+ "radroots" -> "radroots_sdk" [style=solid, label="required"];
+ "radroots" -> "radroots_trade" [style=solid, label="required"];
+ "radroots" -> "radroots_transport" [style=solid, label="required"];
+}
diff --git a/contracts/crates/release_v1/radroots_crates_release_v1.sha256 b/contracts/crates/release_v1/radroots_crates_release_v1.sha256
@@ -0,0 +1,4 @@
+5a11c6ad90cf03162ca2ce4d1692192d01fa57a31c03fd07d61f70093da5e703 radroots_crates_release_v1.md
+7db533f32c70306b29adea35f85686e67287ae33abd33d1013a61590449f1296 radroots_crates_release_v1.toml
+5020875c2cda4b2c9568c8b3f0fad5cd96756c3c779a72481a9652e558f77891 radroots_crates_release_v1_inventory.csv
+d47de10be596a4d33fee102a4f0617f66700b49515a75a1f42d62c9710043059 radroots_crates_release_v1.dot
diff --git a/contracts/crates/release_v1/radroots_crates_release_v1.toml b/contracts/crates/release_v1/radroots_crates_release_v1.toml
@@ -0,0 +1,668 @@
+spec_id = "radroots.crates.release.v1"
+status = "final_architecture"
+date = "2026-07-26"
+package_count = 19
+edition = "2024"
+resolver = "3"
+rust_version = "1.97.1"
+license = "MIT OR Apache-2.0"
+canonical_repositories = [
+ "https://github.com/radrootslabs/lib",
+ "https://github.com/radrootslabs/sdk",
+]
+
+[repositories.lib]
+url = "https://github.com/radrootslabs/lib"
+version = "0.1.0-alpha"
+packages = [
+ "radroots_core",
+ "radroots_identity",
+ "radroots_blossom",
+ "radroots_protocol",
+ "radroots_event",
+ "radroots_event_codec",
+ "radroots_trade",
+ "radroots_signing",
+ "radroots_transport",
+ "radroots_nostr",
+ "radroots_nostr_connect",
+ "radroots_secrets",
+ "radroots_storage",
+ "radroots_storage_sqlite",
+ "radroots_transport_nostr",
+ "radroots_sync",
+ "radroots_geonames",
+]
+
+[repositories.sdk]
+url = "https://github.com/radrootslabs/sdk"
+version = "0.1.0-alpha"
+packages = ["radroots_sdk", "radroots"]
+
+[repository_policy]
+new_repository_forbidden = true
+history_merge_forbidden = true
+cross_repository_dependency = "registry_version"
+synchronized_contract_copies_required = true
+
+[release_policy]
+sdk_facade_lockstep = true
+lower_packages_independent_semver = true
+public_codegen_features_forbidden = true
+public_to_private_edges_forbidden = true
+same_repository_path_and_version_required = true
+package_realistic_validation_required = true
+preview_packages_withheld = true
+
+[quality_policy.coverage]
+status = "temporary_heavy_development"
+repository = "radrootslabs/lib"
+scope = "all_required_workspace_crates"
+minimum_percent = 90.0
+metrics = ["executable_lines", "functions", "regions", "branches"]
+require_measurable_branches = true
+numeric_overrides_below_minimum_forbidden = true
+reinstatement = "future_explicit_contract_and_spec_update"
+
+[[package]]
+name = "radroots_core"
+crate = "radroots_core"
+publish_order_hint = 1
+tier = "foundation"
+platform = "no_std + alloc; std feature"
+responsibility = "Foundational value objects and deterministic invariants: decimal, currency, money, percentage, quantity, units, and pricing."
+default_features = ["std", "serde"]
+features = ["std", "serde"]
+required_radroots_dependencies = []
+optional_radroots_dependencies = []
+modules = [
+ "currency",
+ "decimal",
+ "money",
+ "percent",
+ "pricing",
+ "quantity",
+ "unit",
+]
+root_exports = [
+ "Currency",
+ "Decimal",
+ "Money",
+ "Percent",
+ "Quantity",
+ "QuantityPrice",
+ "Unit",
+ "Error",
+]
+forbidden = "Identifiers, identities, event kinds, networking, persistence, clocks, filesystem paths, process behavior, or application configuration."
+
+[[package]]
+name = "radroots_identity"
+crate = "radroots_identity"
+publish_order_hint = 2
+tier = "foundation"
+platform = "no_std + alloc; std feature"
+responsibility = "Public identity and account value types: canonical public keys, identity IDs, account IDs, public profiles, and usernames."
+default_features = ["std", "serde"]
+features = ["std", "serde"]
+required_radroots_dependencies = []
+optional_radroots_dependencies = []
+modules = ["account", "key", "profile", "username"]
+root_exports = [
+ "AccountId",
+ "IdentityId",
+ "PublicIdentity",
+ "PublicKey",
+ "Profile",
+ "Username",
+ "Error",
+]
+forbidden = "Secret keys, key generation, NIP-49 encryption, keyrings, files, SQLite, runtime paths, upstream nostr::Event values, signer sessions, or host account selection."
+
+[[package]]
+name = "radroots_blossom"
+crate = "radroots_blossom"
+publish_order_hint = 3
+tier = "protocol primitive"
+platform = "no_std + alloc; std feature"
+responsibility = "Portable Blossom protocol primitives: canonical blob URLs, hashes, media descriptors, byte-verification typestates, and authorization claims."
+default_features = ["std", "serde"]
+features = ["std", "serde"]
+required_radroots_dependencies = []
+optional_radroots_dependencies = []
+modules = ["authorization", "descriptor", "hash", "media_type", "url"]
+root_exports = [
+ "BlobUrl",
+ "Sha256",
+ "MediaType",
+ "BlobDescriptor",
+ "ByteVerifiedDescriptor",
+ "AuthorizationClaim",
+ "Error",
+]
+forbidden = "HTTP clients, upload scheduling, cache management, filesystem traversal, application media policy, or global authentication state."
+
+[[package]]
+name = "radroots_protocol"
+crate = "radroots_protocol"
+publish_order_hint = 4
+tier = "versioned wire contract"
+platform = "no_std + alloc; std feature"
+responsibility = "Versioned cross-process and cross-language schemas, capability catalogs, operation descriptors, stable error reports, schema IDs, and structural validation."
+default_features = ["std", "serde"]
+features = ["std", "serde"]
+required_radroots_dependencies = []
+optional_radroots_dependencies = []
+modules = [
+ "capability::v1",
+ "error::v1",
+ "event::v1",
+ "runtime::v1",
+ "radrootsd::transport_publish::v5",
+ "schema",
+]
+root_exports = []
+forbidden = "Native clients, storage, network I/O, executor/runtime ownership, domain reducers, upstream dependency types, unversioned serialized DTOs, or package names containing protocol generations."
+
+[[package]]
+name = "radroots_event"
+crate = "radroots_event"
+publish_order_hint = 5
+tier = "domain protocol model"
+platform = "no_std + alloc; std feature"
+responsibility = "Canonical Radroots event-domain models, validated event identifiers, tags, event contracts, authoring drafts, signed/verified typestates, and NIP-01 wire-neutral representations."
+default_features = ["std", "serde"]
+features = ["std", "serde", "knowledge"]
+required_radroots_dependencies = [
+ "radroots_core",
+ "radroots_identity",
+ "radroots_blossom",
+ "radroots_protocol",
+]
+optional_radroots_dependencies = []
+modules = [
+ "admission",
+ "calendar",
+ "contract",
+ "draft",
+ "envelope",
+ "farm",
+ "food",
+ "id",
+ "knowledge",
+ "listing",
+ "media",
+ "post",
+ "profile",
+ "social",
+ "tag",
+ "trade",
+ "wire",
+]
+root_exports = [
+ "Event",
+ "GenericEventDraft",
+ "SignedEvent",
+ "VerifiedEvent",
+ "EventId",
+ "EventKind",
+ "EventTag",
+ "Error",
+]
+forbidden = "Live Nostr clients, relay pools, signing backends, SQLite, outbox claims, retry scheduling, application state, or duplicate trade/order identifier concepts."
+
+[[package]]
+name = "radroots_event_codec"
+crate = "radroots_event_codec"
+publish_order_hint = 6
+tier = "deterministic algorithm"
+platform = "no_std + alloc where selected features permit; std feature"
+responsibility = "Deterministic canonical encoding, decoding, ID/signature verification, contract validation, admission, and manifest generation for Radroots events."
+default_features = ["std", "json"]
+features = ["std", "serde", "json", "knowledge", "manifests"]
+required_radroots_dependencies = [
+ "radroots_event",
+ "radroots_blossom",
+ "radroots_protocol",
+]
+optional_radroots_dependencies = []
+modules = ["admission", "canonical", "decode", "encode", "manifest", "verify"]
+root_exports = ["Codec", "DecodeError", "EncodeError", "VerificationError"]
+forbidden = "nostr-sdk clients, relay networking, persistence, background work, upstream client errors, or host configuration."
+
+[[package]]
+name = "radroots_trade"
+crate = "radroots_trade"
+publish_order_hint = 7
+tier = "domain algorithm"
+platform = "no_std + alloc for model/reducer; std feature"
+responsibility = "Trade validation, evidence models, deterministic reduction, conflict analysis, and side-effect-free workflow plans over the canonical event trade model."
+default_features = ["std", "serde", "json"]
+features = ["std", "serde", "json"]
+required_radroots_dependencies = [
+ "radroots_core",
+ "radroots_identity",
+ "radroots_event",
+]
+optional_radroots_dependencies = []
+modules = ["evidence", "model", "reducer", "validation", "workflow"]
+root_exports = [
+ "Projection",
+ "ReductionInput",
+ "ReducerIssue",
+ "WorkflowPlan",
+ "ValidationError",
+ "Error",
+]
+forbidden = "A second TradeId definition, actor authorization, signers, event-store access, SQLx, filesystem state, transport delivery, outbox mutation, or process scheduling."
+
+[[package]]
+name = "radroots_signing"
+crate = "radroots_signing"
+publish_order_hint = 8
+tier = "host SPI"
+platform = "no_std + alloc core; std feature"
+responsibility = "Object-safe author/signing SPI, actor provenance, authorization checks, requests, receipts, progress, capabilities, and normalized signing errors."
+default_features = ["std", "serde"]
+features = ["std", "serde"]
+required_radroots_dependencies = [
+ "radroots_identity",
+ "radroots_event",
+ "radroots_protocol",
+]
+optional_radroots_dependencies = []
+modules = [
+ "actor",
+ "capability",
+ "error",
+ "request",
+ "receipt",
+ "signer",
+ "status",
+]
+root_exports = [
+ "Actor",
+ "Signer",
+ "SignRequest",
+ "SignReceipt",
+ "SignerStatus",
+ "Error",
+]
+forbidden = "Raw secret-key ownership, keyrings, relay networking, NIP-46 session persistence, SQL, UI prompts, or executor creation."
+
+[[package]]
+name = "radroots_transport"
+crate = "radroots_transport"
+publish_order_hint = 9
+tier = "network SPI"
+platform = "no_std + alloc data model; std feature"
+responsibility = "Transport-neutral target identities, capability/status models, source and sink SPIs, delivery/fetch policies, bounded requests, provenance, and normalized outcomes."
+default_features = ["std", "serde"]
+features = ["std", "serde"]
+required_radroots_dependencies = [
+ "radroots_identity",
+ "radroots_event",
+ "radroots_protocol",
+]
+optional_radroots_dependencies = []
+modules = [
+ "capability",
+ "endpoint",
+ "error",
+ "outcome",
+ "policy",
+ "sink",
+ "source",
+ "target",
+]
+root_exports = [
+ "TransportId",
+ "Target",
+ "TargetSet",
+ "EventSource",
+ "EventSink",
+ "DeliveryRequest",
+ "DeliveryReceipt",
+ "FetchRequest",
+ "FetchPage",
+ "Error",
+]
+forbidden = "Closed enums that prevent new transports, Reticulum-specific constants, Nostr URLs at the generic root, storage/outbox access, retries, scheduler ownership, or silent fallback."
+
+[[package]]
+name = "radroots_nostr"
+crate = "radroots_nostr"
+publish_order_hint = 10
+tier = "protocol adapter"
+platform = "no_std + alloc for conversion surface; std feature"
+responsibility = "Portable conversion between Radroots native event/identity types and Nostr protocol types, typed NIP helpers, and concrete local signing adapters; no live relay client."
+default_features = ["std", "events"]
+features = ["std", "events", "signing", "nip17", "blossom"]
+required_radroots_dependencies = [
+ "radroots_identity",
+ "radroots_event",
+ "radroots_event_codec",
+]
+optional_radroots_dependencies = ["radroots_signing", "radroots_blossom"]
+modules = ["blossom", "event", "filter", "key", "nip17", "signing", "tag"]
+root_exports = ["Error"]
+forbidden = "nostr-sdk relay pools, reqwest clients, runtime ownership, broad aliases of upstream nostr types at the root, account persistence, or outbox orchestration."
+
+[[package]]
+name = "radroots_nostr_connect"
+crate = "radroots_nostr_connect"
+publish_order_hint = 11
+tier = "security protocol"
+platform = "std for v1; protocol data kept portable"
+responsibility = "Nostr Connect/NIP-46 URIs, methods, permissions, requests, responses, client/server state machines, timeout-independent protocol validation, and normalized errors."
+default_features = ["serde"]
+features = ["serde"]
+required_radroots_dependencies = [
+ "radroots_identity",
+ "radroots_event",
+ "radroots_nostr",
+ "radroots_protocol",
+]
+optional_radroots_dependencies = []
+modules = [
+ "client",
+ "error",
+ "message",
+ "method",
+ "permission",
+ "server",
+ "uri",
+]
+root_exports = [
+ "Client",
+ "Server",
+ "Method",
+ "Permission",
+ "Request",
+ "Response",
+ "BunkerUri",
+ "ClientUri",
+ "Error",
+]
+forbidden = "Relay-pool implementation, secret persistence, approval UI, global sessions, Tokio runtime ownership, or Myc-specific service storage."
+
+[[package]]
+name = "radroots_secrets"
+crate = "radroots_secrets"
+publish_order_hint = 12
+tier = "security SPI"
+platform = "no_std + alloc core; std adapters"
+responsibility = "Secret references, provider and key-wrapping SPIs, versioned encrypted envelopes, zeroization-safe secret handling, and explicit memory/file/keyring adapters."
+default_features = ["std", "serde"]
+features = ["std", "serde", "memory", "file", "keyring"]
+required_radroots_dependencies = []
+optional_radroots_dependencies = []
+modules = [
+ "envelope",
+ "error",
+ "id",
+ "provider",
+ "wrapping",
+ "memory",
+ "file",
+ "keyring",
+]
+root_exports = [
+ "SecretId",
+ "SecretRef",
+ "SecretProvider",
+ "KeyWrapping",
+ "EncryptedEnvelope",
+ "Error",
+]
+forbidden = "Public secret bytes, Clone/Debug/Serialize for secret-bearing values, identity profiles, domain tables, arbitrary key/value storage, hidden key generation, or process-global vaults."
+
+[[package]]
+name = "radroots_storage"
+crate = "radroots_storage"
+publish_order_hint = 13
+tier = "storage SPI"
+platform = "std for v1"
+responsibility = "Backend-neutral canonical event, operation journal, outbox, transport evidence, projection, private-artifact metadata, backup, status, and atomic commit interfaces, plus an in-memory reference backend."
+default_features = ["memory", "serde"]
+features = ["memory", "serde"]
+required_radroots_dependencies = [
+ "radroots_event",
+ "radroots_trade",
+ "radroots_transport",
+ "radroots_protocol",
+]
+optional_radroots_dependencies = []
+modules = [
+ "atomic",
+ "backup",
+ "event",
+ "journal",
+ "memory",
+ "outbox",
+ "private_artifact",
+ "projection",
+ "status",
+]
+root_exports = [
+ "Storage",
+ "EventStore",
+ "Journal",
+ "Outbox",
+ "ProjectionStore",
+ "BackupSource",
+ "StorageStatus",
+ "Error",
+]
+forbidden = "SQL text, SQLx pools or transactions, filesystem paths, application UI state, concrete retry loops, Nostr clients, or unconstrained raw key/value escape hatches."
+
+[[package]]
+name = "radroots_storage_sqlite"
+crate = "radroots_storage_sqlite"
+publish_order_hint = 14
+tier = "native storage backend"
+platform = "std-only native backend"
+responsibility = "SQLite implementation of the storage SPIs with schema migration, WAL, locking, integrity, backup/restore, crash recovery, and encrypted private storage."
+default_features = []
+features = []
+required_radroots_dependencies = [
+ "radroots_storage",
+ "radroots_event_codec",
+ "radroots_secrets",
+]
+optional_radroots_dependencies = []
+modules = [
+ "backup",
+ "config",
+ "integrity",
+ "lock",
+ "migration",
+ "open",
+ "status",
+]
+root_exports = ["SqliteStorage", "OpenOptions", "OpenMode", "Paths", "Error"]
+forbidden = "Public SqlitePool/Connection/Transaction handles, caller-supplied arbitrary SQL, Studio state, global connection pools, runtime installation, or silent schema downgrade."
+
+[[package]]
+name = "radroots_transport_nostr"
+crate = "radroots_transport_nostr"
+publish_order_hint = 15
+tier = "native network adapter"
+platform = "std-only; Tokio implementation detail in v1"
+responsibility = "Concrete Nostr EventSource/EventSink implementation: relay URL policy, connection, NIP-42 authentication, bounded fetch pages, delivery, status, and relay-outcome normalization."
+default_features = []
+features = []
+required_radroots_dependencies = [
+ "radroots_transport",
+ "radroots_nostr",
+ "radroots_event_codec",
+ "radroots_protocol",
+]
+optional_radroots_dependencies = []
+modules = ["auth", "client", "relay", "sink", "source", "status"]
+root_exports = [
+ "NostrTransport",
+ "Config",
+ "RelayUrl",
+ "RelayUrlPolicy",
+ "Error",
+]
+forbidden = "Event-store ingestion, outbox claiming, retry scheduling, projection refresh, global relay clients, direct SQL, or transport fallback."
+
+[[package]]
+name = "radroots_sync"
+crate = "radroots_sync"
+publish_order_hint = 16
+tier = "local-first orchestration"
+platform = "std-only in v1; executor-neutral public API"
+responsibility = "Shared pull, verification, canonical admission, duplicate handling, projection refresh, outbox signing/delivery, status, and retry-decision orchestration without owning scheduling."
+default_features = ["serde"]
+features = ["serde"]
+required_radroots_dependencies = [
+ "radroots_event",
+ "radroots_event_codec",
+ "radroots_signing",
+ "radroots_transport",
+ "radroots_storage",
+ "radroots_trade",
+ "radroots_protocol",
+]
+optional_radroots_dependencies = []
+modules = ["ingest", "policy", "projection", "pull", "push", "status"]
+root_exports = [
+ "Engine",
+ "PullRequest",
+ "PullReceipt",
+ "PushRequest",
+ "PushPreparation",
+ "PushStatus",
+ "SigningRunReceipt",
+ "AdmissionRunReceipt",
+ "DeliveryExecutionReceipt",
+ "SyncStatus",
+ "Error",
+]
+forbidden = "Creating an executor, spawning hidden workers, installing timers globally, owning process lifecycle, storing UI state, or transport-specific branches outside adapters."
+
+[[package]]
+name = "radroots_geonames"
+crate = "radroots_geonames"
+publish_order_hint = 17
+tier = "concrete data provider"
+platform = "std-only"
+responsibility = "GeoNames asset specification, authenticated/integrity-checked acquisition, database lifecycle, and forward/reverse locality lookup using provider-owned types."
+default_features = []
+features = []
+required_radroots_dependencies = []
+optional_radroots_dependencies = []
+modules = ["asset", "database", "download", "model", "query"]
+root_exports = [
+ "Geocoder",
+ "AssetSpec",
+ "AssetStatus",
+ "Query",
+ "Candidate",
+ "Point",
+ "Error",
+]
+forbidden = "Generic multi-provider abstraction before a second provider exists, runtime-path policy, hidden downloads, SDK configuration types, SQLx/reqwest types in the public API, or test-fixture features."
+
+[[package]]
+name = "radroots_sdk"
+crate = "radroots_sdk"
+publish_order_hint = 18
+tier = "advanced front door"
+platform = "std-only native engine"
+responsibility = "Host-neutral asynchronous client engine, product operations, capability reporting, explicit storage/signing/transport composition, diagnostics, backup/restore, and safe commit semantics."
+default_features = ["memory"]
+features = [
+ "memory",
+ "sqlite",
+ "sync",
+ "nostr",
+ "nip46",
+ "local-signing",
+ "radrootsd",
+ "geonames",
+ "knowledge",
+ "native",
+ "full",
+]
+required_radroots_dependencies = [
+ "radroots_core",
+ "radroots_identity",
+ "radroots_protocol",
+ "radroots_event",
+ "radroots_event_codec",
+ "radroots_trade",
+ "radroots_signing",
+ "radroots_transport",
+ "radroots_storage",
+]
+optional_radroots_dependencies = [
+ "radroots_secrets",
+ "radroots_storage_sqlite",
+ "radroots_nostr",
+ "radroots_nostr_connect",
+ "radroots_transport_nostr",
+ "radroots_sync",
+ "radroots_geonames",
+]
+modules = [
+ "capability",
+ "client",
+ "diagnostics",
+ "error",
+ "farm",
+ "listing",
+ "signing",
+ "storage",
+ "sync",
+ "trade",
+ "transport",
+]
+root_exports = ["Client", "ClientBuilder", "Error", "Result"]
+forbidden = "Global runtimes or subscribers, hidden workers, process signals, CLI parsing, UI state, Studio databases, raw SQLx/upstream client types, broad wildcard reexports, or a nominal no_std claim."
+
+[[package]]
+name = "radroots"
+crate = "radroots"
+publish_order_hint = 19
+tier = "ordinary-user front door"
+platform = "std-only"
+responsibility = "Canonical Rust onboarding package with curated modules, safe defaults, stable convenience builders, domain aggregation, examples, and primary documentation."
+default_features = ["client"]
+features = [
+ "client",
+ "native",
+ "nostr",
+ "nip46",
+ "radrootsd",
+ "geonames",
+ "knowledge",
+ "full",
+]
+required_radroots_dependencies = [
+ "radroots_sdk",
+ "radroots_core",
+ "radroots_identity",
+ "radroots_event",
+ "radroots_trade",
+ "radroots_transport",
+]
+optional_radroots_dependencies = []
+modules = [
+ "client",
+ "event",
+ "farm",
+ "identity",
+ "knowledge",
+ "listing",
+ "signing",
+ "storage",
+ "sync",
+ "trade",
+ "transport",
+]
+root_exports = ["Client", "ClientBuilder", "Error", "Result"]
+forbidden = "A public radroots::sdk namespace, wildcard reexport of radroots_sdk, duplicate engine implementation, CLI binary, hidden network/filesystem/keychain side effects, or exposure of every lower-crate symbol."
diff --git a/contracts/crates/release_v1/radroots_crates_release_v1_inventory.csv b/contracts/crates/release_v1/radroots_crates_release_v1_inventory.csv
@@ -0,0 +1,20 @@
+publish_order_hint,package,crate,repository,tier,platform,initial_version,default_features,features,required_radroots_dependencies,optional_radroots_dependencies,direct_consumers,responsibility,forbidden
+1,radroots_core,radroots_core,lib,foundation,no_std + alloc; std feature,0.1.0-alpha,std;serde,std;serde,,,radroots_event;radroots_trade;radroots_sdk;radroots,"Foundational value objects and deterministic invariants: decimal, currency, money, percentage, quantity, units, and pricing.","Identifiers, identities, event kinds, networking, persistence, clocks, filesystem paths, process behavior, or application configuration."
+2,radroots_identity,radroots_identity,lib,foundation,no_std + alloc; std feature,0.1.0-alpha,std;serde,std;serde,,,radroots_event;radroots_signing;radroots_transport;radroots_nostr;radroots_nostr_connect;radroots_sdk;services,"Public identity and account value types: canonical public keys, identity IDs, account IDs, public profiles, and usernames.","Secret keys, key generation, NIP-49 encryption, keyrings, files, SQLite, runtime paths, upstream nostr::Event values, signer sessions, or host account selection."
+3,radroots_blossom,radroots_blossom,lib,protocol primitive,no_std + alloc; std feature,0.1.0-alpha,std;serde,std;serde,,,radroots_event;radroots_event_codec;radroots_nostr;media clients,"Portable Blossom protocol primitives: canonical blob URLs, hashes, media descriptors, byte-verification typestates, and authorization claims.","HTTP clients, upload scheduling, cache management, filesystem traversal, application media policy, or global authentication state."
+4,radroots_protocol,radroots_protocol,lib,versioned wire contract,no_std + alloc; std feature,0.1.0-alpha,std;serde,std;serde,,,radroots_event;radroots_signing;radroots_transport;radroots_storage;radroots_sync;radroots_sdk;radrootsd;bindings,"Versioned cross-process and cross-language schemas, capability catalogs, operation descriptors, stable error reports, schema IDs, and structural validation.","Native clients, storage, network I/O, executor/runtime ownership, domain reducers, upstream dependency types, unversioned serialized DTOs, or package names containing protocol generations."
+5,radroots_event,radroots_event,lib,domain protocol model,no_std + alloc; std feature,0.1.0-alpha,std;serde,std;serde;knowledge,radroots_core;radroots_identity;radroots_blossom;radroots_protocol,,radroots_event_codec;radroots_trade;radroots_signing;radroots_transport;radroots_storage;radroots_sync;radroots_nostr;radroots_sdk;indexers,"Canonical Radroots event-domain models, validated event identifiers, tags, event contracts, authoring drafts, signed/verified typestates, and NIP-01 wire-neutral representations.","Live Nostr clients, relay pools, signing backends, SQLite, outbox claims, retry scheduling, application state, or duplicate trade/order identifier concepts."
+6,radroots_event_codec,radroots_event_codec,lib,deterministic algorithm,no_std + alloc where selected features permit; std feature,0.1.0-alpha,std;json,std;serde;json;knowledge;manifests,radroots_event;radroots_blossom;radroots_protocol,,radroots_nostr;radroots_storage_sqlite;radroots_transport_nostr;radroots_sync;radroots_sdk;bindings,"Deterministic canonical encoding, decoding, ID/signature verification, contract validation, admission, and manifest generation for Radroots events.","nostr-sdk clients, relay networking, persistence, background work, upstream client errors, or host configuration."
+7,radroots_trade,radroots_trade,lib,domain algorithm,no_std + alloc for model/reducer; std feature,0.1.0-alpha,std;serde;json,std;serde;json,radroots_core;radroots_identity;radroots_event,,radroots_storage;radroots_sync;radroots_sdk;RHI;applications,"Trade validation, evidence models, deterministic reduction, conflict analysis, and side-effect-free workflow plans over the canonical event trade model.","A second TradeId definition, actor authorization, signers, event-store access, SQLx, filesystem state, transport delivery, outbox mutation, or process scheduling."
+8,radroots_signing,radroots_signing,lib,host SPI,no_std + alloc core; std feature,0.1.0-alpha,std;serde,std;serde,radroots_identity;radroots_event;radroots_protocol,,radroots_nostr;radroots_sync;radroots_sdk;CLI;Studio;FFI hosts,"Object-safe author/signing SPI, actor provenance, authorization checks, requests, receipts, progress, capabilities, and normalized signing errors.","Raw secret-key ownership, keyrings, relay networking, NIP-46 session persistence, SQL, UI prompts, or executor creation."
+9,radroots_transport,radroots_transport,lib,network SPI,no_std + alloc data model; std feature,0.1.0-alpha,std;serde,std;serde,radroots_identity;radroots_event;radroots_protocol,,radroots_storage;radroots_transport_nostr;radroots_sync;radroots_sdk;services;future adapters,"Transport-neutral target identities, capability/status models, source and sink SPIs, delivery/fetch policies, bounded requests, provenance, and normalized outcomes.","Closed enums that prevent new transports, Reticulum-specific constants, Nostr URLs at the generic root, storage/outbox access, retries, scheduler ownership, or silent fallback."
+10,radroots_nostr,radroots_nostr,lib,protocol adapter,no_std + alloc for conversion surface; std feature,0.1.0-alpha,std;events,std;events;signing;nip17;blossom,radroots_identity;radroots_event;radroots_event_codec,radroots_signing;radroots_blossom,radroots_nostr_connect;radroots_transport_nostr;radroots_sdk;Myc;radrootsd,"Portable conversion between Radroots native event/identity types and Nostr protocol types, typed NIP helpers, and concrete local signing adapters; no live relay client.","nostr-sdk relay pools, reqwest clients, runtime ownership, broad aliases of upstream nostr types at the root, account persistence, or outbox orchestration."
+11,radroots_nostr_connect,radroots_nostr_connect,lib,security protocol,std for v1; protocol data kept portable,0.1.0-alpha,serde,serde,radroots_identity;radroots_event;radroots_nostr;radroots_protocol,,radroots_sdk;Myc;remote signer tooling,"Nostr Connect/NIP-46 URIs, methods, permissions, requests, responses, client/server state machines, timeout-independent protocol validation, and normalized errors.","Relay-pool implementation, secret persistence, approval UI, global sessions, Tokio runtime ownership, or Myc-specific service storage."
+12,radroots_secrets,radroots_secrets,lib,security SPI,no_std + alloc core; std adapters,0.1.0-alpha,std;serde,std;serde;memory;file;keyring,,,radroots_storage_sqlite;radroots_sdk;signing hosts;services,"Secret references, provider and key-wrapping SPIs, versioned encrypted envelopes, zeroization-safe secret handling, and explicit memory/file/keyring adapters.","Public secret bytes, Clone/Debug/Serialize for secret-bearing values, identity profiles, domain tables, arbitrary key/value storage, hidden key generation, or process-global vaults."
+13,radroots_storage,radroots_storage,lib,storage SPI,std for v1,0.1.0-alpha,memory;serde,memory;serde,radroots_event;radroots_trade;radroots_transport;radroots_protocol,,radroots_storage_sqlite;radroots_sync;radroots_sdk;indexers;tests;future backends,"Backend-neutral canonical event, operation journal, outbox, transport evidence, projection, private-artifact metadata, backup, status, and atomic commit interfaces, plus an in-memory reference backend.","SQL text, SQLx pools or transactions, filesystem paths, application UI state, concrete retry loops, Nostr clients, or unconstrained raw key/value escape hatches."
+14,radroots_storage_sqlite,radroots_storage_sqlite,lib,native storage backend,std-only native backend,0.1.0-alpha,,,radroots_storage;radroots_event_codec;radroots_secrets,,radroots_sdk;CLI;Studio;mobile/FFI,"SQLite implementation of the storage SPIs with schema migration, WAL, locking, integrity, backup/restore, crash recovery, and encrypted private storage.","Public SqlitePool/Connection/Transaction handles, caller-supplied arbitrary SQL, Studio state, global connection pools, runtime installation, or silent schema downgrade."
+15,radroots_transport_nostr,radroots_transport_nostr,lib,native network adapter,std-only; Tokio implementation detail in v1,0.1.0-alpha,,,radroots_transport;radroots_nostr;radroots_event_codec;radroots_protocol,,radroots_sdk;CLI;radrootsd;advanced hosts,"Concrete Nostr EventSource/EventSink implementation: relay URL policy, connection, NIP-42 authentication, bounded fetch pages, delivery, status, and relay-outcome normalization.","Event-store ingestion, outbox claiming, retry scheduling, projection refresh, global relay clients, direct SQL, or transport fallback."
+16,radroots_sync,radroots_sync,lib,local-first orchestration,std-only in v1; executor-neutral public API,0.1.0-alpha,serde,serde,radroots_event;radroots_event_codec;radroots_signing;radroots_transport;radroots_storage;radroots_trade;radroots_protocol,,radroots_sdk;CLI;Studio;mobile/FFI;advanced hosts,"Shared pull, verification, canonical admission, duplicate handling, projection refresh, outbox signing/delivery, status, and retry-decision orchestration without owning scheduling.","Creating an executor, spawning hidden workers, installing timers globally, owning process lifecycle, storing UI state, or transport-specific branches outside adapters."
+17,radroots_geonames,radroots_geonames,lib,concrete data provider,std-only,0.1.0-alpha,,,,,radroots_sdk;CLI;geocoding applications,"GeoNames asset specification, authenticated/integrity-checked acquisition, database lifecycle, and forward/reverse locality lookup using provider-owned types.","Generic multi-provider abstraction before a second provider exists, runtime-path policy, hidden downloads, SDK configuration types, SQLx/reqwest types in the public API, or test-fixture features."
+18,radroots_sdk,radroots_sdk,sdk,advanced front door,std-only native engine,0.1.0-alpha,memory,memory;sqlite;sync;nostr;nip46;local-signing;radrootsd;geonames;knowledge;native;full,radroots_core;radroots_identity;radroots_protocol;radroots_event;radroots_event_codec;radroots_trade;radroots_signing;radroots_transport;radroots_storage,radroots_secrets;radroots_storage_sqlite;radroots_nostr;radroots_nostr_connect;radroots_transport_nostr;radroots_sync;radroots_geonames,CLI;Studio;FFI/mobile;advanced native applications,"Host-neutral asynchronous client engine, product operations, capability reporting, explicit storage/signing/transport composition, diagnostics, backup/restore, and safe commit semantics.","Global runtimes or subscribers, hidden workers, process signals, CLI parsing, UI state, Studio databases, raw SQLx/upstream client types, broad wildcard reexports, or a nominal no_std claim."
+19,radroots,radroots,sdk,ordinary-user front door,std-only,0.1.0-alpha,client,client;native;nostr;nip46;radrootsd;geonames;knowledge;full,radroots_sdk;radroots_core;radroots_identity;radroots_event;radroots_trade;radroots_transport,,ordinary Rust applications;examples;documentation,"Canonical Rust onboarding package with curated modules, safe defaults, stable convenience builders, domain aggregation, examples, and primary documentation.","A public radroots::sdk namespace, wildcard reexport of radroots_sdk, duplicate engine implementation, CLI binary, hidden network/filesystem/keychain side effects, or exposure of every lower-crate symbol."
diff --git a/contracts/releases/api_boundaries.toml b/contracts/releases/api_boundaries.toml
@@ -97,60 +97,3 @@ allowed_public_paths = []
[[package]]
name = "radroots"
allowed_public_paths = []
-[[exception]]
-id = "RCRV1-API-006"
-package = "radroots_nostr_connect"
-source = "src/client.rs"
-forbidden_path = "nostr"
-items = [
- "client::RadrootsNostrConnectClientTarget",
- "client::RadrootsNostrConnectClientTarget::new",
- "client::RadrootsNostrConnectClientTransport",
- "client::build_request_event",
- "client::execute_request_with_transport",
- "client::parse_response_event",
-]
-observed_paths = [
- "nostr::Event",
- "nostr::Keys",
- "nostr::PublicKey",
- "nostr::RelayUrl",
-]
-adr = "docs/decisions/0001-public-api-leakage-migration-baseline.md"
-removal_step = 313
-rationale = "Hidden, publish-frozen client signatures remain only for CLI, Myc, and residual first-party cutovers in Steps 271, 288, and 293."
-
-[[exception]]
-id = "RCRV1-API-007"
-package = "radroots_nostr_connect"
-source = "src/message.rs"
-forbidden_path = "nostr"
-items = [
- "message::RadrootsNostrConnectPendingConnectionPollOutcome",
- "message::RadrootsNostrConnectRemoteSessionCapability",
- "message::RadrootsNostrConnectRequest",
- "message::RadrootsNostrConnectResponse",
-]
-observed_paths = [
- "nostr::Event",
- "nostr::PublicKey",
- "nostr::RelayUrl",
- "nostr::UnsignedEvent",
-]
-adr = "docs/decisions/0001-public-api-leakage-migration-baseline.md"
-removal_step = 313
-rationale = "Hidden, publish-frozen aliases remain only for CLI, Myc, and residual first-party cutovers in Steps 271, 288, and 293."
-
-[[exception]]
-id = "RCRV1-API-008"
-package = "radroots_nostr_connect"
-source = "src/uri.rs"
-forbidden_path = "nostr"
-items = [
- "uri::RadrootsNostrConnectBunkerUri",
- "uri::RadrootsNostrConnectClientUri",
-]
-observed_paths = ["nostr::PublicKey", "nostr::RelayUrl"]
-adr = "docs/decisions/0001-public-api-leakage-migration-baseline.md"
-removal_step = 313
-rationale = "Hidden, publish-frozen URI aliases remain only for CLI, Myc, and residual first-party cutovers in Steps 271, 288, and 293."
diff --git a/crates/blossom/README.md b/crates/blossom/README.md
@@ -59,9 +59,9 @@ Supporting states and constructors remain in these modules:
- `url` — structural blob URLs and the stricter approved-reference state.
The normative responsibility and dependency boundary are defined by the
-[`radroots_blossom` package charter](../../docs/specs/radroots_crates_release_v1.md).
-The reviewed pre-release surface is recorded in
-[`docs/api`](../../docs/api/README.md).
+[`radroots_blossom` package charter](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
+The reviewed pre-release surface is recorded in the
+[`radroots_blossom` API baseline](../../contracts/api_baselines/radroots_blossom.txt).
## Features
diff --git a/crates/core/README.md b/crates/core/README.md
@@ -46,9 +46,9 @@ Focused errors and operations remain in these modules:
- `unit` — unit parsing, dimensions, and deterministic conversions.
The normative responsibility and dependency boundary are defined by the
-[`radroots_core` package charter](../../docs/specs/radroots_crates_release_v1.md).
-The reviewed pre-release surface is recorded in
-[`docs/api`](../../docs/api/README.md).
+[`radroots_core` package charter](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
+The reviewed pre-release surface is recorded in the
+[`radroots_core` API baseline](../../contracts/api_baselines/radroots_core.txt).
## Features
diff --git a/crates/event/tests/package_boundary.rs b/crates/event/tests/package_boundary.rs
@@ -22,7 +22,7 @@ const RELAY_HINT: &str = include_str!("../src/relay_hint.rs");
const TRADE: &str = include_str!("../src/trade.rs");
const ADMISSION: &str = include_str!("../src/admission.rs");
const VERIFICATION: &str = include_str!("../src/verification.rs");
-const PUBLIC_API: &str = include_str!("../../../docs/api/radroots_event.txt");
+const PUBLIC_API: &str = include_str!("../../../contracts/api_baselines/radroots_event.txt");
const CODEC_MANIFEST: &str = include_str!("../../event_codec/Cargo.toml");
#[test]
diff --git a/crates/event/tests/source_boundary.rs b/crates/event/tests/source_boundary.rs
@@ -116,7 +116,7 @@ fn public_api_has_no_redundant_radroots_type_prefixes() {
.parent()
.and_then(Path::parent)
.expect("lib repo root");
- let baseline = fs::read_to_string(repo_root.join("docs/api/radroots_event.txt"))
+ let baseline = fs::read_to_string(repo_root.join("contracts/api_baselines/radroots_event.txt"))
.expect("read radroots_event public API baseline");
let mut prefixed = baseline
.split(|character: char| !is_identifier_character(character))
diff --git a/crates/event_codec/README.md b/crates/event_codec/README.md
@@ -29,7 +29,7 @@ The Release V1 canonical root consists of `Codec`, `DecodeError`,
canonical modules so each import states whether it encodes, decodes, verifies,
or admits data. Legacy top-level domain routes are not exposed. The canonical
surface is recorded in the
-[public API baseline](../../docs/api/radroots_event_codec.txt).
+[public API baseline](../../contracts/api_baselines/radroots_event_codec.txt).
## Verification pipeline
@@ -146,9 +146,9 @@ responsibilities belong to adapter and runtime crates.
The authoritative Release V1 responsibility, dependency, feature, module, and
forbidden-scope contract is the
-[Radroots crates Release V1 specification](../../docs/specs/radroots_crates_release_v1.md).
-The baseline generation procedure and toolchain are documented in
-[`docs/api/README.md`](../../docs/api/README.md).
+[Radroots crates Release V1 specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
+The reviewed surface is the
+[`radroots_event_codec` API baseline](../../contracts/api_baselines/radroots_event_codec.txt).
## Copyright
diff --git a/crates/event_codec/tests/package_boundary.rs b/crates/event_codec/tests/package_boundary.rs
@@ -10,7 +10,7 @@ const VERIFICATION: &str = include_str!("../src/verification/v1.rs");
const EXAMPLE: &str = include_str!("../examples/verify_profile.rs");
const FUZZ_LOCK: &str = include_str!("../../../fuzz/event_codec/Cargo.lock");
const FUZZ_MANIFEST: &str = include_str!("../../../fuzz/event_codec/Cargo.toml");
-const PUBLIC_API: &str = include_str!("../../../docs/api/radroots_event_codec.txt");
+const PUBLIC_API: &str = include_str!("../../../contracts/api_baselines/radroots_event_codec.txt");
#[test]
fn manifest_has_final_identity_and_required_radroots_dependencies() {
diff --git a/crates/geonames/README.md b/crates/geonames/README.md
@@ -11,9 +11,9 @@ client types, or define a generic geocoder SPI. Publication remains disabled
during the `0.1.0-alpha` refactor.
The authoritative package charter is the
-[`radroots_geonames` section of the Release V1 specification](https://github.com/radrootslabs/lib/blob/master/docs/specs/radroots_crates_release_v1.md#17-radroots_geonames).
+[`radroots_geonames` section of the Release V1 specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
The reviewed Rust surface is recorded in the
-[public API baseline](../../docs/api/radroots_geonames.txt).
+[public API baseline](../../contracts/api_baselines/radroots_geonames.txt).
## Prepare a query without I/O
diff --git a/crates/geonames/tests/package_boundary.rs b/crates/geonames/tests/package_boundary.rs
@@ -5,8 +5,7 @@ use std::path::Path;
const MANIFEST: &str = include_str!("../Cargo.toml");
const README: &str = include_str!("../README.md");
const EXAMPLE: &str = include_str!("../examples/prepare_query.rs");
-const PUBLIC_API: &str = include_str!("../../../docs/api/radroots_geonames.txt");
-const API_INDEX: &str = include_str!("../../../docs/api/README.md");
+const PUBLIC_API: &str = include_str!("../../../contracts/api_baselines/radroots_geonames.txt");
const ROOT: &str = include_str!("../src/lib.rs");
const PUBLISH_POLICY: &str = include_str!("../../../contracts/releases/publish_policy.toml");
@@ -49,9 +48,9 @@ fn documentation_example_and_reviewed_api_baseline_are_complete() {
"## Database and query behavior",
"## Errors, serialization, and side effects",
"## Intended consumers",
- "radroots_crates_release_v1.md#17-radroots_geonames",
+ "radroots_crates_release_v1.toml",
"examples/prepare_query.rs",
- "docs/api/radroots_geonames.txt",
+ "contracts/api_baselines/radroots_geonames.txt",
] {
assert!(README.contains(required), "README is missing `{required}`");
}
@@ -97,10 +96,6 @@ fn documentation_example_and_reviewed_api_baseline_are_complete() {
"public API exposes `{forbidden}`"
);
}
- assert!(
- API_INDEX
- .contains("| `radroots_geonames` | [`radroots_geonames.txt`](radroots_geonames.txt) |")
- );
}
#[test]
diff --git a/crates/identity/README.md b/crates/identity/README.md
@@ -51,11 +51,11 @@ Focused values remain in these modules:
- `username` — canonical username parsing, bounds, and normalization.
The normative responsibility and dependency boundary are defined by the
-[`radroots_identity` package charter](../../docs/specs/radroots_crates_release_v1.md).
-The reviewed pre-release surface is recorded in
-[`docs/api`](../../docs/api/README.md). Signing, Nostr-key, secret-provider,
-and storage ownership is documented in the
-[`identity` migration boundary](../../docs/migration/identity.md).
+[`radroots_identity` package charter](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
+The reviewed pre-release surface is recorded in the
+[`radroots_identity` API baseline](../../contracts/api_baselines/radroots_identity.txt).
+Signing, Nostr-key, secret-provider, and storage ownership remains outside
+this public-only identity package as described by the package boundary above.
## Features
diff --git a/crates/nostr/README.md b/crates/nostr/README.md
@@ -11,7 +11,7 @@ state. Live Nostr transport belongs in `radroots_transport_nostr`; application
composition belongs in `radroots_sdk` or an advanced host.
The authoritative package charter is the
-[`radroots_nostr` section of the Release V1 specification](https://github.com/radrootslabs/lib/blob/master/docs/specs/radroots_crates_release_v1.md#10-radroots_nostr).
+[`radroots_nostr` section of the Release V1 specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
## Quick start
diff --git a/crates/nostr/tests/package_boundary.rs b/crates/nostr/tests/package_boundary.rs
@@ -22,7 +22,7 @@ const README: &str = include_str!("../README.md");
const SIGNING_MODULE: &str = include_str!("../src/signing.rs");
const TAG_MODULE: &str = include_str!("../src/tag.rs");
const TYPES_MODULE: &str = include_str!("../src/types.rs");
-const PUBLIC_API: &str = include_str!("../../../docs/api/radroots_nostr.txt");
+const PUBLIC_API: &str = include_str!("../../../contracts/api_baselines/radroots_nostr.txt");
const IDENTITY_MANIFEST: &str = include_str!("../../identity/Cargo.toml");
const IDENTITY_KEY_MODULE: &str = include_str!("../../identity/src/key.rs");
const TRANSPORT_MANIFEST: &str = include_str!("../../transport_nostr/Cargo.toml");
diff --git a/crates/nostr_connect/README.md b/crates/nostr_connect/README.md
@@ -26,7 +26,7 @@ The curated root exports are `Client`, `Server`, `Method`, `Permission`,
`Request`, `Response`, `BunkerUri`, `ClientUri`, and `Error`. Supporting types
remain in their owning modules so callers make protocol boundaries explicit.
The reviewed Rust surface is recorded in the
-[public API baseline](../../docs/api/radroots_nostr_connect.txt).
+[public API baseline](../../contracts/api_baselines/radroots_nostr_connect.txt).
## Preparing a client request
@@ -130,9 +130,9 @@ applications, and host runtimes.
The authoritative responsibility, dependency, feature, module, root-export,
and forbidden-scope contract is the
-[Radroots crates Release V1 specification](../../docs/specs/radroots_crates_release_v1.md).
-The baseline generation procedure and pinned toolchain are documented in
-[`docs/api/README.md`](../../docs/api/README.md).
+[Radroots crates Release V1 specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
+The reviewed surface is the
+[`radroots_nostr_connect` API baseline](../../contracts/api_baselines/radroots_nostr_connect.txt).
## Copyright
diff --git a/crates/nostr_connect/tests/package_boundary.rs b/crates/nostr_connect/tests/package_boundary.rs
@@ -8,7 +8,8 @@ use radroots_nostr_connect::{
const MANIFEST: &str = include_str!("../Cargo.toml");
const README: &str = include_str!("../README.md");
const EXAMPLE: &str = include_str!("../examples/prepare_request.rs");
-const PUBLIC_API: &str = include_str!("../../../docs/api/radroots_nostr_connect.txt");
+const PUBLIC_API: &str =
+ include_str!("../../../contracts/api_baselines/radroots_nostr_connect.txt");
const CLIENT: &str = include_str!("../src/client.rs");
const METHOD: &str = include_str!("../src/method.rs");
const PERMISSION: &str = include_str!("../src/permission.rs");
diff --git a/crates/protocol/README.md b/crates/protocol/README.md
@@ -82,6 +82,6 @@ tools. Applications should normally enter through `radroots` or
a versioned boundary.
The package charter is the
-[Release V1 specification](../../docs/specs/radroots_crates_release_v1.md).
+[Release V1 specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
The reviewed Rust surface is recorded in the
-[public API baseline](../../docs/api/radroots_protocol.txt).
+[public API baseline](../../contracts/api_baselines/radroots_protocol.txt).
diff --git a/crates/radroots/README.md b/crates/radroots/README.md
@@ -90,6 +90,6 @@ use radroots::sdk;
```
The normative package charter is the [`radroots` release-v1
-specification](../../docs/specs/radroots_crates_release_v1.md#19-radroots).
+specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
The reviewed pre-release public API is recorded in the
-[`radroots` baseline](../../docs/api/radroots.txt).
+[`radroots` baseline](../../contracts/api_baselines/radroots.txt).
diff --git a/crates/sdk/README.md b/crates/sdk/README.md
@@ -11,7 +11,7 @@ and `Result`. Advanced operations live in the `farm`, `listing`, `trade`,
modules.
The package charter is the normative [`radroots_sdk` crate
-specification](../../docs/specs/radroots_crates_release_v1.md#18-radroots_sdk).
+specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
This advanced front door is intended for CLI, Studio, FFI/mobile, and native
applications that need to compose storage, signing, transport, or sync
capabilities directly. Ordinary Rust applications should use the curated
@@ -171,4 +171,4 @@ publication remains blocked pending the approval packet and a separately
authorized operator step. The crate is licensed under `MIT OR Apache-2.0`.
The reviewed all-features public API baseline is recorded at
-[`docs/api/radroots_sdk.txt`](../../docs/api/radroots_sdk.txt).
+[`contracts/api_baselines/radroots_sdk.txt`](../../contracts/api_baselines/radroots_sdk.txt).
diff --git a/crates/secrets/README.md b/crates/secrets/README.md
@@ -26,7 +26,7 @@ The curated root exports only `EncryptedEnvelope`, `Error`, `SecretId`,
`SecretRef`, `SecretProvider`, and `KeyWrapping`. Supporting request, policy,
adapter, and value types remain in their owning modules so security boundaries
stay explicit. The reviewed Rust surface is recorded in the
-[public API baseline](../../docs/api/radroots_secrets.txt).
+[public API baseline](../../contracts/api_baselines/radroots_secrets.txt).
## Explicit provider and envelope flow
@@ -172,9 +172,9 @@ remain with their dedicated packages and hosts.
The authoritative responsibility, dependency, feature, module, root-export,
and forbidden-scope contract is the
-[Radroots crates Release V1 specification](../../docs/specs/radroots_crates_release_v1.md).
-The baseline generation procedure and pinned toolchain are documented in
-[`docs/api/README.md`](../../docs/api/README.md).
+[Radroots crates Release V1 specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
+The reviewed surface is the
+[`radroots_secrets` API baseline](../../contracts/api_baselines/radroots_secrets.txt).
## Copyright
diff --git a/crates/secrets/tests/security_contract.rs b/crates/secrets/tests/security_contract.rs
@@ -9,7 +9,7 @@ use radroots_secrets::{Error, SecretId, SecretRef};
use std::fs;
use std::path::{Path, PathBuf};
-const PUBLIC_API: &str = include_str!("../../../docs/api/radroots_secrets.txt");
+const PUBLIC_API: &str = include_str!("../../../contracts/api_baselines/radroots_secrets.txt");
#[test]
fn reviewed_api_forbids_secret_bearing_clone_serialize_and_byte_access() {
diff --git a/crates/signing/README.md b/crates/signing/README.md
@@ -12,7 +12,7 @@ belongs in `radroots_nostr_connect`; applications compose those adapters in
`radroots_sdk` or their own host layer.
The authoritative package charter is the
-[`radroots_signing` section of the Release V1 specification](https://github.com/radrootslabs/lib/blob/master/docs/specs/radroots_crates_release_v1.md#8-radroots_signing).
+[`radroots_signing` section of the Release V1 specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
## Typical flow
diff --git a/crates/signing/tests/package_boundary.rs b/crates/signing/tests/package_boundary.rs
@@ -9,7 +9,7 @@ use radroots_signing::{
const MANIFEST: &str = include_str!("../Cargo.toml");
const EXAMPLE: &str = include_str!("../examples/host_signer.rs");
-const PUBLIC_API: &str = include_str!("../../../docs/api/radroots_signing.txt");
+const PUBLIC_API: &str = include_str!("../../../contracts/api_baselines/radroots_signing.txt");
const README: &str = include_str!("../README.md");
const ROOT: &str = include_str!("../src/lib.rs");
@@ -150,7 +150,7 @@ fn package_documentation_and_reviewed_api_baseline_are_complete() {
"## Security and side effects",
"## Features",
"## Intended consumers",
- "radroots_crates_release_v1.md#8-radroots_signing",
+ "radroots_crates_release_v1.toml",
"examples/host_signer.rs",
] {
assert!(README.contains(required), "README is missing {required}");
diff --git a/crates/storage/README.md b/crates/storage/README.md
@@ -12,7 +12,7 @@ is the native durable backend and the opt-in [`memory`] module is the bounded
deterministic reference implementation.
The authoritative package charter is the
-[`radroots_storage` section of the Release V1 specification](https://github.com/radrootslabs/lib/blob/master/docs/specs/radroots_crates_release_v1.md#13-radroots_storage).
+[`radroots_storage` section of the Release V1 specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
## Typical flow
diff --git a/crates/trade/README.md b/crates/trade/README.md
@@ -29,7 +29,7 @@ human or business-workflow identifier and has no conversion to or from
Operational-listing host planning and binding-generation machinery are outside
this algorithm package. The reviewed Rust surface is recorded in the
-[public API baseline](../../docs/api/radroots_trade.txt).
+[public API baseline](../../contracts/api_baselines/radroots_trade.txt).
## Deterministic reduction
@@ -140,9 +140,9 @@ storage, orchestration, and front-door packages.
The authoritative Release V1 responsibility, dependency, feature, module,
root-export, and forbidden-scope contract is the
-[Radroots crates Release V1 specification](../../docs/specs/radroots_crates_release_v1.md).
-The baseline generation procedure and toolchain are documented in
-[`docs/api/README.md`](../../docs/api/README.md).
+[Radroots crates Release V1 specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
+The reviewed surface is the
+[`radroots_trade` API baseline](../../contracts/api_baselines/radroots_trade.txt).
## Copyright
diff --git a/crates/trade/tests/package_boundary.rs b/crates/trade/tests/package_boundary.rs
@@ -18,7 +18,7 @@ const WORKFLOW: &str = include_str!("../src/workflow.rs");
const PACKAGE_TIERS: &str = include_str!("../../../contracts/releases/package_tiers.toml");
const README: &str = include_str!("../README.md");
const EXAMPLE: &str = include_str!("../examples/reduce_trade.rs");
-const PUBLIC_API: &str = include_str!("../../../docs/api/radroots_trade.txt");
+const PUBLIC_API: &str = include_str!("../../../contracts/api_baselines/radroots_trade.txt");
#[test]
fn manifest_has_final_identity_and_required_radroots_dependencies() {
diff --git a/crates/transport/README.md b/crates/transport/README.md
@@ -11,7 +11,7 @@ adapters such as `radroots_transport_nostr` implement the SPI; applications
compose those adapters in `radroots_sdk` or their own host layer.
The authoritative package charter is the
-[`radroots_transport` section of the Release V1 specification](https://github.com/radrootslabs/lib/blob/master/docs/specs/radroots_crates_release_v1.md#9-radroots_transport).
+[`radroots_transport` section of the Release V1 specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
## Typical flow
diff --git a/crates/transport/tests/package_boundary.rs b/crates/transport/tests/package_boundary.rs
@@ -10,14 +10,14 @@ use radroots_transport::{
const MANIFEST: &str = include_str!("../Cargo.toml");
const EXAMPLE: &str = include_str!("../examples/host_transport.rs");
-const PUBLIC_API: &str = include_str!("../../../docs/api/radroots_transport.txt");
+const PUBLIC_API: &str = include_str!("../../../contracts/api_baselines/radroots_transport.txt");
const README: &str = include_str!("../README.md");
const ROOT: &str = include_str!("../src/lib.rs");
const SOURCE: &str = include_str!("../src/source.rs");
const SINK: &str = include_str!("../src/sink.rs");
const ID: &str = include_str!("../src/id.rs");
const TARGET: &str = include_str!("../src/target.rs");
-const DEVIATIONS: &str = include_str!("../../../docs/implementation/deviations.toml");
+const DEVIATIONS: &str = include_str!("../../../contracts/architecture/deviations.toml");
#[test]
fn manifest_has_final_identity_features_and_required_radroots_dependencies() {
@@ -81,7 +81,7 @@ fn package_documentation_and_reviewed_api_baseline_are_complete() {
"## Security and side effects",
"## Features",
"## Intended consumers",
- "radroots_crates_release_v1.md#9-radroots_transport",
+ "radroots_crates_release_v1.toml",
"examples/host_transport.rs",
] {
assert!(README.contains(required), "README is missing {required}");
diff --git a/crates/transport_nostr/README.md b/crates/transport_nostr/README.md
@@ -13,9 +13,9 @@ policies belong to `radroots_sync` and host applications. It does own bounded
relay profiles, per-relay reconnect suppression, and evidence-based status.
The authoritative package charter is the
-[`radroots_transport_nostr` section of the Release V1 specification](https://github.com/radrootslabs/lib/blob/master/docs/specs/radroots_crates_release_v1.md#15-radroots_transport_nostr).
+[`radroots_transport_nostr` section of the Release V1 specification](../../contracts/crates/release_v1/radroots_crates_release_v1.toml).
The reviewed Rust surface is recorded in the
-[public API baseline](../../docs/api/radroots_transport_nostr.txt).
+[public API baseline](../../contracts/api_baselines/radroots_transport_nostr.txt).
## Configure without connecting
diff --git a/crates/transport_nostr/tests/legacy_quarantine.rs b/crates/transport_nostr/tests/legacy_quarantine.rs
@@ -1,8 +1,9 @@
use std::fs;
use std::path::Path;
-const DEVIATIONS: &str = include_str!("../../../docs/implementation/deviations.toml");
-const SHIMS: &str = include_str!("../../../docs/implementation/COMPATIBILITY_SHIMS.md");
+const DEVIATIONS: &str = include_str!("../../../contracts/architecture/deviations.toml");
+const RETIRED_COMPATIBILITY: &str =
+ include_str!("../../../contracts/architecture/retired_compatibility.v1.toml");
const PUBLISH_POLICY: &str = include_str!("../../../contracts/releases/publish_policy.toml");
#[test]
@@ -29,7 +30,7 @@ fn superseded_transport_packages_are_removed_from_release_authority() {
assert!(!workspace_manifest.contains(package));
assert!(!approved.contains(package));
assert!(!private.contains(&format!("\"{package}\"")));
- assert!(!SHIMS.contains(&format!("| `{package}` |")));
+ assert!(RETIRED_COMPATIBILITY.contains(&format!("id = \"{package}\"")));
}
}
diff --git a/crates/transport_nostr/tests/package_boundary.rs b/crates/transport_nostr/tests/package_boundary.rs
@@ -5,8 +5,8 @@ use std::path::Path;
const MANIFEST: &str = include_str!("../Cargo.toml");
const README: &str = include_str!("../README.md");
const EXAMPLE: &str = include_str!("../examples/configure_transport.rs");
-const PUBLIC_API: &str = include_str!("../../../docs/api/radroots_transport_nostr.txt");
-const API_INDEX: &str = include_str!("../../../docs/api/README.md");
+const PUBLIC_API: &str =
+ include_str!("../../../contracts/api_baselines/radroots_transport_nostr.txt");
const ROOT: &str = include_str!("../src/lib.rs");
#[test]
@@ -60,9 +60,9 @@ fn documentation_example_and_reviewed_api_baseline_are_complete() {
"## Serialization and diagnostics",
"## Features and runtime requirements",
"## Intended consumers",
- "radroots_crates_release_v1.md#15-radroots_transport_nostr",
+ "radroots_crates_release_v1.toml",
"examples/configure_transport.rs",
- "docs/api/radroots_transport_nostr.txt",
+ "contracts/api_baselines/radroots_transport_nostr.txt",
] {
assert!(README.contains(required), "README is missing `{required}`");
}
@@ -113,9 +113,6 @@ fn documentation_example_and_reviewed_api_baseline_are_complete() {
"reviewed public API baseline exposes `{forbidden}`"
);
}
- assert!(API_INDEX.contains(
- "| `radroots_transport_nostr` | [`radroots_transport_nostr.txt`](radroots_transport_nostr.txt) |"
- ));
}
fn radroots_dependency_keys(manifest: &str) -> BTreeSet<&str> {
diff --git a/crates/transport_nostr/tests/workspace_consumers.rs b/crates/transport_nostr/tests/workspace_consumers.rs
@@ -33,7 +33,7 @@ fn superseded_transport_packages_and_nostrdb_adapter_are_removed() {
fs::read_to_string(workspace.join("Cargo.toml")).expect("workspace manifest");
let nostrdb_manifest =
fs::read_to_string(workspace.join("crates/nostrdb/Cargo.toml")).expect("nostrdb manifest");
- let deviations = fs::read_to_string(workspace.join("docs/implementation/deviations.toml"))
+ let deviations = fs::read_to_string(workspace.join("contracts/architecture/deviations.toml"))
.expect("deviation authority");
assert!(!workspace_manifest.contains("radroots_nostr_runtime"));
diff --git a/tools/xtask/src/architecture.rs b/tools/xtask/src/architecture.rs
@@ -9,9 +9,10 @@ use serde::Deserialize;
mod api_leakage;
mod core_contract;
mod dependency_boundary;
+mod retired_compatibility;
-const DEVIATIONS_RELATIVE: &str = "docs/implementation/deviations.toml";
-const ARCHITECTURE_RELATIVE: &str = "docs/specs/radroots_crates_release_v1.toml";
+const DEVIATIONS_RELATIVE: &str = "contracts/architecture/deviations.toml";
+const ARCHITECTURE_RELATIVE: &str = "contracts/crates/release_v1/radroots_crates_release_v1.toml";
const ARCHITECTURE_ID: &str = "radroots.crates.release.v1";
const PUBLIC_HOMEPAGE: &str = "https://radroots.org";
const PUBLIC_README: &str = "README.md";
@@ -168,6 +169,7 @@ pub fn validate(workspace_root: &Path) -> Result<(), String> {
core_contract::validate(workspace_root)?;
api_leakage::validate_policy_catalog(workspace_root, &architecture_packages)?;
dependency_boundary::validate_policy_catalog(workspace_root, &architecture_packages)?;
+ retired_compatibility::validate(workspace_root)?;
validate_workspace_toolchain(workspace_root, &architecture)?;
validate_public_package_metadata(workspace_root, &architecture)?;
validate_no_production_sibling_paths(workspace_root)?;
@@ -1105,7 +1107,7 @@ fn validate_spec_anchor(
let (relative, fragment) = anchor
.split_once('#')
.map_or((anchor, None), |(path, fragment)| (path, Some(fragment)));
- if relative.trim().is_empty() || fragment.is_some_and(|value| value.trim().is_empty()) {
+ if relative.trim().is_empty() || fragment.is_none_or(|value| value.trim().is_empty()) {
return Err(format!(
"deviation {deviation_id} has invalid spec anchor {anchor}"
));
@@ -1121,14 +1123,64 @@ fn validate_spec_anchor(
"deviation {deviation_id} spec anchor must be repository-relative: {anchor}"
));
}
- if !relative.starts_with("docs/specs/") || !workspace_root.join(path).is_file() {
+ if relative != ARCHITECTURE_RELATIVE {
return Err(format!(
- "deviation {deviation_id} spec anchor does not resolve to a local spec: {anchor}"
+ "deviation {deviation_id} spec anchor must target {ARCHITECTURE_RELATIVE}: {anchor}"
+ ));
+ }
+ let machine_path = workspace_root.join(path);
+ let raw = fs::read_to_string(&machine_path)
+ .map_err(|error| format!("read {}: {error}", machine_path.display()))?;
+ let machine = toml::from_str::<toml::Value>(&raw)
+ .map_err(|error| format!("parse {}: {error}", machine_path.display()))?;
+ let selector = fragment.expect("fragment is required above");
+ if !machine_selector_exists(&machine, selector) {
+ return Err(format!(
+ "deviation {deviation_id} spec anchor has unknown machine selector {selector}"
));
}
Ok(())
}
+fn machine_selector_exists(machine: &toml::Value, selector: &str) -> bool {
+ let segments = selector.split('.').collect::<Vec<_>>();
+ if segments.iter().any(|segment| segment.is_empty()) {
+ return false;
+ }
+ let root = match machine.as_table() {
+ Some(root) => root,
+ None => return false,
+ };
+ match segments.as_slice() {
+ ["repositories", repository] => root
+ .get("repositories")
+ .and_then(toml::Value::as_table)
+ .and_then(|repositories| repositories.get(*repository))
+ .is_some_and(toml::Value::is_table),
+ ["repository_policy"] | ["release_policy"] => {
+ root.get(segments[0]).is_some_and(toml::Value::is_table)
+ }
+ ["quality_policy", "coverage"] => root
+ .get("quality_policy")
+ .and_then(toml::Value::as_table)
+ .and_then(|quality| quality.get("coverage"))
+ .is_some_and(toml::Value::is_table),
+ ["package", package] => root
+ .get("package")
+ .and_then(toml::Value::as_array)
+ .is_some_and(|packages| {
+ packages.iter().any(|candidate| {
+ candidate
+ .as_table()
+ .and_then(|table| table.get("name"))
+ .and_then(toml::Value::as_str)
+ == Some(*package)
+ })
+ }),
+ _ => false,
+ }
+}
+
fn require_text(deviation_id: &str, field: &str, value: &str) -> Result<(), String> {
if value.trim().is_empty() {
return Err(format!(
@@ -1184,10 +1236,10 @@ mod tests {
.expect("clock")
.as_nanos();
let root = std::env::temp_dir().join(format!("radroots_architecture_{label}_{nonce}"));
- fs::create_dir_all(root.join("docs/specs")).expect("create spec root");
+ fs::create_dir_all(root.join("contracts/crates/release_v1")).expect("create spec root");
fs::write(
- root.join("docs/specs/radroots_crates_release_v1.md"),
- "# Architecture\n",
+ root.join("contracts/crates/release_v1/radroots_crates_release_v1.toml"),
+ "spec_id = \"radroots.crates.release.v1\"\n\n[repositories.sdk]\nurl = \"https://github.com/radrootslabs/sdk\"\n",
)
.expect("write spec");
root
@@ -1203,7 +1255,7 @@ date = "2026-07-27"
status = "active"
approval = "Explicit user correction dated 2026-07-27."
affected_steps = ["015", "016"]
-spec_anchors = ["docs/specs/radroots_crates_release_v1.md#repository-topology"]
+spec_anchors = ["contracts/crates/release_v1/radroots_crates_release_v1.toml#repositories.sdk"]
source_evidence = ["The approved architecture assigns packages to the existing lib and sdk repositories."]
replacement_action = "Keep both standalone repositories and verify them independently."
verification = ["Repository-local architecture validation passes."]
@@ -1253,7 +1305,7 @@ adr_required = false
fn rejects_incomplete_active_deviation() {
let root = test_root("incomplete");
let incomplete = complete_ledger().replace(
- "spec_anchors = [\"docs/specs/radroots_crates_release_v1.md#repository-topology\"]",
+ "spec_anchors = [\"contracts/crates/release_v1/radroots_crates_release_v1.toml#repositories.sdk\"]",
"spec_anchors = []",
);
let error = validate_ledger(&root, "radroots.crates.release.v1", &incomplete)
@@ -1263,6 +1315,22 @@ adr_required = false
}
#[test]
+ fn deviation_anchors_require_resolving_machine_selectors() {
+ let root = test_root("machine_selector");
+ let invalid = complete_ledger().replace("#repositories.sdk", "#garbage");
+ let error = validate_ledger(&root, "radroots.crates.release.v1", &invalid)
+ .expect_err("arbitrary fragment must fail");
+ assert!(error.contains("unknown machine selector garbage"));
+
+ let markdown_slug =
+ complete_ledger().replace("#repositories.sdk", "#20-current-to-target-migration-map");
+ let error = validate_ledger(&root, "radroots.crates.release.v1", &markdown_slug)
+ .expect_err("Markdown heading slug must fail");
+ assert!(error.contains("unknown machine selector"));
+ let _ = fs::remove_dir_all(root);
+ }
+
+ #[test]
fn workspace_membership_requires_every_local_package_root() {
let root = test_root("workspace_members");
for path in ["crates/a", "tools/xtask"] {
diff --git a/tools/xtask/src/architecture/api_leakage.rs b/tools/xtask/src/architecture/api_leakage.rs
@@ -12,9 +12,38 @@ use syn::{
};
const API_BOUNDARIES_RELATIVE: &str = "contracts/releases/api_boundaries.toml";
+const API_DECISION_RELATIVE: &str =
+ "contracts/architecture/decisions/public_api_leakage_migration_baseline.v1.toml";
+const API_DECISION_ID: &str = "radroots.public_api_leakage_migration_baseline.v1";
const SPEC_ID: &str = "radroots.crates.release.v1";
const POLICY_SCHEMA_VERSION: u16 = 1;
-const CURRENT_STEP: u16 = 25;
+const DECISION_SCHEMA_VERSION: u16 = 1;
+const CURRENT_STEP: u16 = 313;
+const HISTORICAL_EXCEPTION_IDS: [&str; 8] = [
+ "RCRV1-API-001",
+ "RCRV1-API-002",
+ "RCRV1-API-003",
+ "RCRV1-API-004",
+ "RCRV1-API-005",
+ "RCRV1-API-006",
+ "RCRV1-API-007",
+ "RCRV1-API-008",
+];
+const FORBIDDEN_EXPANSION: [&str; 8] = [
+ "broader_aliases",
+ "keyring",
+ "new_items",
+ "new_upstream_paths",
+ "platform_specific_types",
+ "reqwest",
+ "sqlx",
+ "tokio",
+];
+const REMOVAL_MILESTONES: [(&str, u16); 3] = [
+ ("radroots_identity", 42),
+ ("radroots_nostr", 124),
+ ("radroots_nostr_connect", 140),
+];
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
@@ -43,12 +72,34 @@ struct ApiException {
forbidden_path: String,
items: Vec<String>,
observed_paths: Vec<String>,
- adr: String,
+ decision: String,
removal_step: u16,
rationale: String,
}
#[derive(Debug, Deserialize)]
+#[serde(deny_unknown_fields)]
+struct ApiLeakageDecision {
+ schema_version: u16,
+ decision_id: String,
+ status: String,
+ accepted_date: String,
+ completed_step: u16,
+ publication_authorized: bool,
+ exception_ids: Vec<String>,
+ active_exception_ids: Vec<String>,
+ forbidden_expansion: Vec<String>,
+ removal_milestone: Vec<ApiRemovalMilestone>,
+}
+
+#[derive(Debug, Deserialize)]
+#[serde(deny_unknown_fields)]
+struct ApiRemovalMilestone {
+ package: String,
+ step: u16,
+}
+
+#[derive(Debug, Deserialize)]
struct CargoMetadata {
packages: Vec<CargoPackage>,
workspace_members: Vec<String>,
@@ -151,6 +202,7 @@ fn validate_policy(
"{API_BOUNDARIES_RELATIVE} spec_id must be {SPEC_ID}"
));
}
+ let decision = load_and_validate_decision(workspace_root)?;
let forbidden = sorted_unique(
"forbidden_public_paths",
@@ -293,7 +345,7 @@ fn validate_policy(
exception.id
));
}
- validate_adr(workspace_root, exception)?;
+ validate_decision_reference(exception, &decision)?;
for item in &exception.items {
let key = (
exception.package.as_str(),
@@ -309,6 +361,16 @@ fn validate_policy(
}
}
}
+ let active_exception_ids = decision
+ .active_exception_ids
+ .iter()
+ .map(String::as_str)
+ .collect::<BTreeSet<_>>();
+ if exception_ids != active_exception_ids {
+ return Err(format!(
+ "{API_BOUNDARIES_RELATIVE} active exception ids must exactly match {API_DECISION_RELATIVE}"
+ ));
+ }
Ok(())
}
@@ -352,32 +414,87 @@ fn validate_relative_source(id: &str, source: &str) -> Result<(), String> {
Ok(())
}
-fn validate_adr(workspace_root: &Path, exception: &ApiException) -> Result<(), String> {
- let path = Path::new(&exception.adr);
- if path.is_absolute()
- || !exception.adr.starts_with("docs/decisions/")
+fn load_and_validate_decision(workspace_root: &Path) -> Result<ApiLeakageDecision, String> {
+ let path = workspace_root.join(API_DECISION_RELATIVE);
+ let raw =
+ fs::read_to_string(&path).map_err(|error| format!("read {}: {error}", path.display()))?;
+ let decision = toml::from_str::<ApiLeakageDecision>(&raw)
+ .map_err(|error| format!("parse {}: {error}", path.display()))?;
+
+ if decision.schema_version != DECISION_SCHEMA_VERSION
+ || decision.decision_id != API_DECISION_ID
+ || decision.status != "accepted_historical"
+ || decision.accepted_date != "2026-07-27"
+ || decision.completed_step != CURRENT_STEP
+ || decision.publication_authorized
+ {
+ return Err(format!(
+ "{API_DECISION_RELATIVE} identity, lifecycle, or publication policy drifted"
+ ));
+ }
+ if decision
+ .exception_ids
+ .iter()
+ .map(String::as_str)
+ .ne(HISTORICAL_EXCEPTION_IDS)
+ {
+ return Err(format!(
+ "{API_DECISION_RELATIVE} must preserve the exact historical exception ids"
+ ));
+ }
+ if !decision.active_exception_ids.is_empty() {
+ return Err(format!(
+ "{API_DECISION_RELATIVE} must not authorize active exceptions after Step {CURRENT_STEP}"
+ ));
+ }
+ if decision
+ .forbidden_expansion
+ .iter()
+ .map(String::as_str)
+ .ne(FORBIDDEN_EXPANSION)
+ {
+ return Err(format!(
+ "{API_DECISION_RELATIVE} forbidden expansion set drifted"
+ ));
+ }
+ if decision
+ .removal_milestone
+ .iter()
+ .map(|milestone| (milestone.package.as_str(), milestone.step))
+ .ne(REMOVAL_MILESTONES)
+ {
+ return Err(format!(
+ "{API_DECISION_RELATIVE} removal milestones drifted"
+ ));
+ }
+ Ok(decision)
+}
+
+fn validate_decision_reference(
+ exception: &ApiException,
+ decision: &ApiLeakageDecision,
+) -> Result<(), String> {
+ let path = Path::new(&exception.decision);
+ if exception.decision != API_DECISION_RELATIVE
+ || path.is_absolute()
|| path
.components()
.any(|component| !matches!(component, Component::Normal(_)))
- || path.extension().and_then(|extension| extension.to_str()) != Some("md")
+ || path.extension().and_then(|extension| extension.to_str()) != Some("toml")
{
return Err(format!(
- "{API_BOUNDARIES_RELATIVE} exception {} ADR must be a normalized docs/decisions/*.md path",
+ "{API_BOUNDARIES_RELATIVE} exception {} decision must be {API_DECISION_RELATIVE}",
exception.id
));
}
- let full = workspace_root.join(path);
- let raw = fs::read_to_string(&full).map_err(|error| {
- format!(
- "{API_BOUNDARIES_RELATIVE} exception {} ADR {} is not readable: {error}",
- exception.id,
- full.display()
- )
- })?;
- if !raw.contains(&exception.id) {
+ if !decision
+ .active_exception_ids
+ .iter()
+ .any(|id| id == &exception.id)
+ {
return Err(format!(
- "{API_BOUNDARIES_RELATIVE} exception {} ADR {} must cite the exception id",
- exception.id, exception.adr
+ "{API_BOUNDARIES_RELATIVE} exception {} is not active in {API_DECISION_RELATIVE}",
+ exception.id
));
}
Ok(())
@@ -1264,15 +1381,18 @@ fn module_label(module: &[String]) -> String {
#[cfg(test)]
mod tests {
use super::{
- ApiBoundaryPolicy, ApiException, CargoMetadata, exception_matches, scan_workspace,
+ API_DECISION_RELATIVE, ApiBoundaryPolicy, ApiException, CargoMetadata, scan_workspace,
validate_policy,
};
use serde::Deserialize;
use std::{collections::BTreeSet, fs};
const POLICY: &str = include_str!("../../../../contracts/releases/api_boundaries.toml");
+ const DECISION: &str = include_str!(
+ "../../../../contracts/architecture/decisions/public_api_leakage_migration_baseline.v1.toml"
+ );
const ARCHITECTURE: &str =
- include_str!("../../../../docs/specs/radroots_crates_release_v1.toml");
+ include_str!("../../../../contracts/crates/release_v1/radroots_crates_release_v1.toml");
const GENERIC_SQLX: &str = include_str!("../../tests/fixtures/api-leakage/generic-sqlx.rs");
const GENERIC_RENAMED_TOKIO: &str =
include_str!("../../tests/fixtures/api-leakage/generic-renamed-tokio.rs");
@@ -1280,8 +1400,6 @@ mod tests {
include_str!("../../tests/fixtures/api-leakage/allowed-concrete-adapter.rs");
const PRIVATE_IMPLEMENTATION: &str =
include_str!("../../tests/fixtures/api-leakage/private-implementation.rs");
- const ADR_EXCEPTION: &str = include_str!("../../tests/fixtures/api-leakage/adr-exception.rs");
-
#[derive(Deserialize)]
struct ArchitectureCatalog {
package: Vec<ArchitecturePackage>,
@@ -1345,19 +1463,22 @@ mod tests {
.expect("scan fixture")
}
- fn write_baseline_adr(root: &std::path::Path) {
- fs::create_dir_all(root.join("docs/decisions")).expect("baseline ADR directory");
+ fn write_baseline_decision(root: &std::path::Path) {
+ fs::create_dir_all(root.join("contracts/architecture/decisions"))
+ .expect("baseline decision directory");
fs::write(
- root.join("docs/decisions/0001-public-api-leakage-migration-baseline.md"),
- "RCRV1-API-001 RCRV1-API-002 RCRV1-API-003 RCRV1-API-004 RCRV1-API-005 RCRV1-API-006 RCRV1-API-007 RCRV1-API-008\n",
+ root.join(
+ "contracts/architecture/decisions/public_api_leakage_migration_baseline.v1.toml",
+ ),
+ DECISION,
)
- .expect("baseline ADR");
+ .expect("baseline decision");
}
#[test]
fn policy_covers_exact_architecture_catalog() {
let root = tempfile::TempDir::new().expect("policy root");
- write_baseline_adr(root.path());
+ write_baseline_decision(root.path());
validate_policy(root.path(), &policy(), &expected_packages())
.expect("policy without exceptions");
}
@@ -1393,15 +1514,9 @@ mod tests {
}
#[test]
- fn exact_item_exception_requires_resolving_adr() {
+ fn invented_exception_is_rejected_by_the_completed_decision() {
let root = tempfile::TempDir::new().expect("exception root");
- write_baseline_adr(root.path());
- fs::create_dir_all(root.path().join("docs/decisions")).expect("ADR directory");
- fs::write(
- root.path().join("docs/decisions/0001-test.md"),
- "# Test\n\nRCRV1-API-999\n",
- )
- .expect("ADR");
+ write_baseline_decision(root.path());
let mut policy = policy();
policy.exception.push(ApiException {
id: "RCRV1-API-999".to_owned(),
@@ -1410,24 +1525,56 @@ mod tests {
forbidden_path: "reqwest".to_owned(),
items: vec!["temporary_client".to_owned()],
observed_paths: vec!["reqwest::Client".to_owned()],
- adr: "docs/decisions/0001-test.md".to_owned(),
- removal_step: 226,
+ decision: API_DECISION_RELATIVE.to_owned(),
+ removal_step: 400,
rationale: "test-only exception".to_owned(),
});
- validate_policy(root.path(), &policy, &expected_packages()).expect("resolving ADR");
- let finding = scan_workspace(
- root.path(),
- &policy,
- &fixture_metadata(root.path(), "radroots_sdk", ADR_EXCEPTION),
- )
- .expect("scan exception fixture")
- .pop()
- .expect("finding");
- assert!(exception_matches(&policy.exception, &finding));
+ let error = validate_policy(root.path(), &policy, &expected_packages())
+ .expect_err("invented exception must fail");
+ assert!(error.contains("is not active"));
+ }
- fs::remove_file(root.path().join("docs/decisions/0001-test.md")).expect("remove ADR");
+ #[test]
+ fn expired_historical_exception_cannot_return() {
+ let root = tempfile::TempDir::new().expect("expired exception root");
+ write_baseline_decision(root.path());
+ let mut policy = policy();
+ policy.exception.push(ApiException {
+ id: "RCRV1-API-006".to_owned(),
+ package: "radroots_nostr_connect".to_owned(),
+ source: "src/client.rs".to_owned(),
+ forbidden_path: "nostr".to_owned(),
+ items: vec!["client::RadrootsNostrConnectClientTarget".to_owned()],
+ observed_paths: vec!["nostr::PublicKey".to_owned()],
+ decision: API_DECISION_RELATIVE.to_owned(),
+ removal_step: 313,
+ rationale: "retired historical exception".to_owned(),
+ });
let error = validate_policy(root.path(), &policy, &expected_packages())
- .expect_err("missing ADR must fail");
- assert!(error.contains("is not readable"));
+ .expect_err("expired historical exception must fail");
+ assert!(error.contains("expired at Step 313"));
+ }
+
+ #[test]
+ fn malformed_or_publication_authorizing_decision_fails_closed() {
+ let root = tempfile::TempDir::new().expect("decision validation root");
+ write_baseline_decision(root.path());
+ let decision_path = root.path().join(API_DECISION_RELATIVE);
+ fs::write(&decision_path, "not valid toml = [\n").expect("malformed decision");
+ let malformed = validate_policy(root.path(), &policy(), &expected_packages())
+ .expect_err("malformed decision must fail");
+ assert!(malformed.contains("parse"));
+
+ fs::write(
+ &decision_path,
+ DECISION.replace(
+ "publication_authorized = false",
+ "publication_authorized = true",
+ ),
+ )
+ .expect("publication-authorizing decision");
+ let authorized = validate_policy(root.path(), &policy(), &expected_packages())
+ .expect_err("publication authorization must fail");
+ assert!(authorized.contains("publication policy drifted"));
}
}
diff --git a/tools/xtask/src/architecture/core_contract.rs b/tools/xtask/src/architecture/core_contract.rs
@@ -6,7 +6,7 @@ use std::{
use syn::{Item, UseTree, Visibility};
-const ARCHITECTURE_RELATIVE: &str = "docs/specs/radroots_crates_release_v1.toml";
+const ARCHITECTURE_RELATIVE: &str = "contracts/crates/release_v1/radroots_crates_release_v1.toml";
const CORE_MANIFEST_RELATIVE: &str = "crates/core/Cargo.toml";
const CORE_LIB_RELATIVE: &str = "crates/core/src/lib.rs";
@@ -485,11 +485,12 @@ serde_json = { workspace = true }
fn fixture() -> tempfile::TempDir {
let root = tempdir().expect("temporary workspace");
- fs::create_dir_all(root.path().join("docs/specs")).expect("spec directory");
+ fs::create_dir_all(root.path().join("contracts/crates/release_v1"))
+ .expect("spec directory");
fs::create_dir_all(root.path().join("crates/core/src")).expect("core directory");
fs::write(
root.path()
- .join("docs/specs/radroots_crates_release_v1.toml"),
+ .join("contracts/crates/release_v1/radroots_crates_release_v1.toml"),
SPEC,
)
.expect("architecture spec");
diff --git a/tools/xtask/src/architecture/dependency_boundary.rs b/tools/xtask/src/architecture/dependency_boundary.rs
@@ -570,7 +570,7 @@ mod tests {
const POLICY: &str = include_str!("../../../../contracts/releases/package_tiers.toml");
const ARCHITECTURE: &str =
- include_str!("../../../../docs/specs/radroots_crates_release_v1.toml");
+ include_str!("../../../../contracts/crates/release_v1/radroots_crates_release_v1.toml");
const DOMAIN_TO_STORAGE: &str =
include_str!("../../tests/fixtures/dependency-boundaries/domain-to-storage.json");
const SPI_TO_ADAPTER: &str =
diff --git a/tools/xtask/src/architecture/retired_compatibility.rs b/tools/xtask/src/architecture/retired_compatibility.rs
@@ -0,0 +1,150 @@
+use std::{collections::BTreeMap, fs, path::Path};
+
+use serde::Deserialize;
+
+const CONTRACT_RELATIVE: &str = "contracts/architecture/retired_compatibility.v1.toml";
+const CONTRACT_ID: &str = "radroots.retired_compatibility.v1";
+const SCHEMA_VERSION: u16 = 1;
+
+#[derive(Debug, Deserialize)]
+#[serde(deny_unknown_fields)]
+struct RetiredCompatibility {
+ schema_version: u16,
+ contract_id: String,
+ status: String,
+ retired_bridge: Vec<RetiredBridge>,
+}
+
+#[derive(Debug, Deserialize)]
+#[serde(deny_unknown_fields)]
+struct RetiredBridge {
+ id: String,
+ final_owners: Vec<String>,
+ removal_step: u16,
+}
+
+pub(super) fn validate(workspace_root: &Path) -> Result<(), String> {
+ let path = workspace_root.join(CONTRACT_RELATIVE);
+ let raw =
+ fs::read_to_string(&path).map_err(|error| format!("read {}: {error}", path.display()))?;
+ validate_raw(&raw).map_err(|error| format!("{CONTRACT_RELATIVE}: {error}"))
+}
+
+fn validate_raw(raw: &str) -> Result<(), String> {
+ let contract = toml::from_str::<RetiredCompatibility>(raw)
+ .map_err(|error| format!("invalid TOML: {error}"))?;
+ if contract.schema_version != SCHEMA_VERSION
+ || contract.contract_id != CONTRACT_ID
+ || contract.status != "enforced"
+ {
+ return Err("identity or lifecycle drifted".to_owned());
+ }
+
+ let mut actual = BTreeMap::new();
+ for bridge in contract.retired_bridge {
+ if bridge.id.trim().is_empty() || bridge.final_owners.is_empty() {
+ return Err("bridge ids and final owners must not be empty".to_owned());
+ }
+ if bridge
+ .final_owners
+ .windows(2)
+ .any(|pair| pair[0] >= pair[1])
+ {
+ return Err(format!(
+ "bridge {} final owners must be sorted and unique",
+ bridge.id
+ ));
+ }
+ if actual
+ .insert(
+ bridge.id.clone(),
+ (bridge.final_owners, bridge.removal_step),
+ )
+ .is_some()
+ {
+ return Err(format!("bridge {} is duplicated", bridge.id));
+ }
+ }
+
+ let expected = BTreeMap::from([
+ (
+ "nostrdb_runtime_adapter".to_owned(),
+ (vec!["radroots_storage_sqlite".to_owned()], 301),
+ ),
+ (
+ "radroots_authority".to_owned(),
+ (vec!["radroots_signing".to_owned()], 313),
+ ),
+ (
+ "radroots_geocoder".to_owned(),
+ (vec!["radroots_geonames".to_owned()], 313),
+ ),
+ (
+ "radroots_net".to_owned(),
+ (vec!["radroots_transport".to_owned()], 301),
+ ),
+ (
+ "radroots_nostr_connect_hidden_prelude".to_owned(),
+ (vec!["radroots_nostr_connect".to_owned()], 313),
+ ),
+ (
+ "radroots_nostr_connect_prefixed_client_bridge".to_owned(),
+ (vec!["radroots_nostr_connect".to_owned()], 313),
+ ),
+ (
+ "radroots_nostr_runtime".to_owned(),
+ (vec!["radroots_transport_nostr".to_owned()], 301),
+ ),
+ (
+ "radroots_nostr_signer".to_owned(),
+ (
+ vec![
+ "radroots_nostr_connect".to_owned(),
+ "radroots_signing".to_owned(),
+ ],
+ 313,
+ ),
+ ),
+ ]);
+ if actual != expected {
+ return Err("retired bridge inventory, final owners, or removal steps drifted".to_owned());
+ }
+ Ok(())
+}
+
+#[cfg(test)]
+mod tests {
+ use super::validate_raw;
+
+ const CONTRACT: &str =
+ include_str!("../../../../contracts/architecture/retired_compatibility.v1.toml");
+
+ #[test]
+ fn current_retirement_contract_is_complete() {
+ validate_raw(CONTRACT).expect("complete retirement contract");
+ }
+
+ #[test]
+ fn malformed_or_incomplete_retirement_contract_fails_closed() {
+ let malformed = validate_raw("not toml = [\n").expect_err("malformed contract must fail");
+ assert!(malformed.contains("invalid TOML"));
+
+ let geocoder = r#"[[retired_bridge]]
+id = "radroots_geocoder"
+final_owners = ["radroots_geonames"]
+removal_step = 313
+
+"#;
+ let incomplete = validate_raw(&CONTRACT.replace(geocoder, ""))
+ .expect_err("missing geocoder retirement must fail");
+ assert!(incomplete.contains("inventory"));
+
+ let no_prefixed_bridge = CONTRACT.replace(
+ "radroots_nostr_connect_prefixed_client_bridge",
+ "radroots_nostr_connect_unknown_bridge",
+ );
+ let prefixed = validate_raw(&no_prefixed_bridge)
+ .expect_err("missing prefixed-client retirement must fail");
+ assert!(prefixed.contains("inventory"));
+ }
+}
diff --git a/tools/xtask/src/catalog.rs b/tools/xtask/src/catalog.rs
@@ -85,6 +85,7 @@ struct ReleaseV2 {
publication_authorized: bool,
public_packages: Vec<String>,
v1_artifact: Vec<V1Artifact>,
+ v1_retired_human_artifact: Vec<RetiredV1HumanArtifact>,
}
#[derive(Debug, Deserialize)]
@@ -96,6 +97,13 @@ struct V1Artifact {
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
+struct RetiredV1HumanArtifact {
+ former_path: String,
+ sha256: String,
+}
+
+#[derive(Debug, Deserialize)]
+#[serde(deny_unknown_fields)]
struct ConsolidationV1 {
schema_version: u16,
consolidation_id: String,
@@ -567,7 +575,7 @@ fn validate_release(
catalog: &Catalog,
workspace_root: &Path,
) -> Result<(), String> {
- if release.schema_version != 1
+ if release.schema_version != 2
|| release.spec_id != RELEASE_ID
|| release.status != "approved_not_published"
|| release.supersedes_without_mutation != "radroots.crates.release.v1"
@@ -602,14 +610,24 @@ fn validate_release(
}
}
let expected = BTreeSet::from([
- "docs/specs/radroots_crates_release_v1.dot",
- "docs/specs/radroots_crates_release_v1.md",
- "docs/specs/radroots_crates_release_v1.sha256",
- "docs/specs/radroots_crates_release_v1.toml",
- "docs/specs/radroots_crates_release_v1_inventory.csv",
+ "contracts/crates/release_v1/radroots_crates_release_v1.dot",
+ "contracts/crates/release_v1/radroots_crates_release_v1.sha256",
+ "contracts/crates/release_v1/radroots_crates_release_v1.toml",
+ "contracts/crates/release_v1/radroots_crates_release_v1_inventory.csv",
]);
if paths != expected {
- return Err("release v2 must pin every historical v1 authority artifact".to_owned());
+ return Err("release v2 must pin every historical v1 machine artifact".to_owned());
+ }
+ if release.v1_retired_human_artifact.len() != 1 {
+ return Err("release v2 must record the retired v1 human artifact".to_owned());
+ }
+ let retired = &release.v1_retired_human_artifact[0];
+ validate_relative_path(&retired.former_path)?;
+ validate_sha256(&retired.sha256, "retired v1 human artifact digest")?;
+ if retired.former_path != "docs/specs/radroots_crates_release_v1.md"
+ || retired.sha256 != "ea2c1f0f5c53fae56a247ae7519b065c9a0d62dafb998b75a48075f4a875b5eb"
+ {
+ return Err("release v2 retired v1 human artifact drifted".to_owned());
}
Ok(())
}
diff --git a/tools/xtask/src/contract.rs b/tools/xtask/src/contract.rs
@@ -155,7 +155,7 @@ const KNOWLEDGE_BETA_CONTRACT_IDS: [&str; 3] = [
"radroots.knowledge.change_proposal.v1",
"radroots.knowledge.contribution_attestation.v1",
];
-const EVENT_BOUNDARY_MATRIX_ENV: &str = "RADROOTS_EVENT_BOUNDARY_MATRIX";
+const EVENT_BOUNDARY_MATRIX_RELATIVE: &str = "contracts/event_boundary_matrix.md";
const COVERAGE_REQUIRED_THRESHOLD: f64 = 90.0;
const COVERAGE_REQUIRED_THRESHOLD_LABEL: &str = "90/90/90/90";
const COVERAGE_REPORT_EPSILON: f64 = 0.000_001;
@@ -1271,11 +1271,6 @@ const FOOD_AVAILABILITY_VECTOR_EXPECTATIONS: [(&str, &str); 40] = [
"food_availability.validate_revision.valid",
),
];
-const EVENT_BOUNDARY_MATRIX_RELATIVES: [&str; 2] = [
- "contracts/event_boundary_matrix.md",
- "docs/platform/canonical/open_source/radroots_v1_spec/02_public_contract_and_runtime/08_event_boundary_matrix.md",
-];
-
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct ContractManifest {
@@ -3212,37 +3207,16 @@ fn parse_json<T: for<'de> Deserialize<'de>>(path: &Path) -> Result<T, String> {
}
}
-fn resolve_event_boundary_matrix_path_with_override(
- workspace_root: &Path,
- event_boundary_override: Option<PathBuf>,
-) -> Result<PathBuf, String> {
- if let Some(path) = event_boundary_override {
- if !path.is_file() {
- return Err(format!(
- "{EVENT_BOUNDARY_MATRIX_ENV} points to a missing canonical event matrix file: {}",
- path.display()
- ));
- }
- return Ok(path);
+fn resolve_event_boundary_matrix_path(workspace_root: &Path) -> Result<PathBuf, String> {
+ let candidate = workspace_root.join(EVENT_BOUNDARY_MATRIX_RELATIVE);
+ if candidate.is_file() {
+ return Ok(candidate);
}
-
- for ancestor in workspace_root.ancestors() {
- for relative in EVENT_BOUNDARY_MATRIX_RELATIVES {
- let candidate = ancestor.join(relative);
- if candidate.is_file() {
- return Ok(candidate);
- }
- }
- }
-
resolve_missing_event_boundary_matrix_path(workspace_root)
}
fn missing_event_boundary_matrix_error() -> String {
- format!(
- "canonical event matrix not found; set {EVENT_BOUNDARY_MATRIX_ENV} or provide one of: {}",
- EVENT_BOUNDARY_MATRIX_RELATIVES.join(", ")
- )
+ format!("canonical event matrix not found at {EVENT_BOUNDARY_MATRIX_RELATIVE}")
}
#[cfg(not(test))]
@@ -3389,13 +3363,11 @@ fn validate_event_boundary_source_witness(
Ok(())
}
-fn validate_canonical_event_boundary_with_override(
+fn validate_canonical_event_boundary_at_path(
workspace_root: &Path,
- event_boundary_override: Option<PathBuf>,
+ matrix_path: &Path,
) -> Result<(), String> {
- let matrix_path =
- resolve_event_boundary_matrix_path_with_override(workspace_root, event_boundary_override)?;
- let rows = parse_event_boundary_matrix(&matrix_path)?;
+ let rows = parse_event_boundary_matrix(matrix_path)?;
let expected_domains = CANONICAL_EVENT_BOUNDARY_EXPECTATIONS
.iter()
.map(|row| row.domain.to_string())
@@ -3460,7 +3432,8 @@ fn validate_canonical_event_boundary_with_override(
}
pub fn validate_canonical_event_boundary(workspace_root: &Path) -> Result<(), String> {
- validate_canonical_event_boundary_with_override(workspace_root, None)
+ let matrix_path = resolve_event_boundary_matrix_path(workspace_root)?;
+ validate_canonical_event_boundary_at_path(workspace_root, &matrix_path)
}
fn contract_root(workspace_root: &Path) -> PathBuf {
@@ -3812,7 +3785,8 @@ fn validate_workspace_version_lockstep(
) -> Result<(), String> {
let workspace_manifest =
parse_toml::<WorkspaceVersionCargoManifest>(&workspace_root.join("Cargo.toml"))?;
- let architecture_path = workspace_root.join("docs/specs/radroots_crates_release_v1.toml");
+ let architecture_path =
+ workspace_root.join("contracts/crates/release_v1/radroots_crates_release_v1.toml");
let governed_version = if architecture_path.is_file() {
parse_toml::<CratesReleaseArchitecture>(&architecture_path)?
.repositories
@@ -8533,7 +8507,8 @@ fn validate_v1_release_policy(
return Ok(None);
}
- let architecture_path = workspace_root.join("docs/specs/radroots_crates_release_v1.toml");
+ let architecture_path =
+ workspace_root.join("contracts/crates/release_v1/radroots_crates_release_v1.toml");
let architecture = parse_toml::<CratesReleaseArchitecture>(&architecture_path)?;
let expected_approved = collect_unique_set(
&architecture
@@ -9583,7 +9558,7 @@ mod tests {
fn create_synthetic_workspace(prefix: &str) -> PathBuf {
let root = temp_root(prefix);
write_file(
- &root.join("docs/specs/radroots_crates_release_v1.toml"),
+ &root.join("contracts/crates/release_v1/radroots_crates_release_v1.toml"),
r#"spec_id = "radroots.crates.release.v1"
package_count = 2
@@ -11023,7 +10998,7 @@ crates = ["radroots_a", "radroots_b", "radroots_c", "radroots_d", "radroots_e"]
assert!(lock_error.contains("Cargo.lock package radroots_a version"));
write_file(
- &root.join("docs/specs/radroots_crates_release_v1.toml"),
+ &root.join("contracts/crates/release_v1/radroots_crates_release_v1.toml"),
r#"spec_id = "radroots.crates.release.v1"
package_count = 0
package = []
@@ -11532,8 +11507,7 @@ packages = []
#[test]
fn canonical_event_boundary_reports_row_drift() {
let root = workspace_root();
- let matrix_path =
- resolve_event_boundary_matrix_path_with_override(&root, None).expect("matrix path");
+ let matrix_path = resolve_event_boundary_matrix_path(&root).expect("matrix path");
let raw = fs::read_to_string(&matrix_path).expect("read matrix");
let drifted = raw.replacen(
"| message | 14 | Message |",
@@ -11544,7 +11518,7 @@ packages = []
let override_path = temp.join("spec-coverage.md");
write_file(&override_path, &drifted);
- let err = validate_canonical_event_boundary_with_override(&root, Some(override_path))
+ let err = validate_canonical_event_boundary_at_path(&root, &override_path)
.expect_err("message kind drift should fail");
assert!(err.contains("message kind drift"));
@@ -11554,8 +11528,7 @@ packages = []
#[test]
fn canonical_event_boundary_rejects_deletion_operation_drift() {
let root = workspace_root();
- let matrix_path =
- resolve_event_boundary_matrix_path_with_override(&root, None).expect("matrix path");
+ let matrix_path = resolve_event_boundary_matrix_path(&root).expect("matrix path");
let raw = fs::read_to_string(&matrix_path).expect("read matrix");
let (preamble, table) = raw
.split_once("## Coverage matrix")
@@ -11572,7 +11545,7 @@ packages = []
let override_path = temp.join("spec-coverage.md");
write_file(&override_path, &drifted);
- let error = validate_canonical_event_boundary_with_override(&root, Some(override_path))
+ let error = validate_canonical_event_boundary_at_path(&root, &override_path)
.expect_err("deletion operation drift must fail");
assert!(error.contains("deletion_request rpc drift"), "{error}");
@@ -11580,6 +11553,22 @@ packages = []
}
#[test]
+ fn event_boundary_never_falls_back_to_parent_human_documentation() {
+ let parent = temp_root("event_boundary_parent_docs");
+ let capsule = parent.join("oss/lib");
+ fs::create_dir_all(&capsule).expect("capsule root");
+ let parent_doc = parent.join(
+ "docs/platform/canonical/open_source/radroots_v1_spec/02_public_contract_and_runtime/08_event_boundary_matrix.md",
+ );
+ write_file(&parent_doc, &synthetic_event_boundary_matrix());
+
+ let error = resolve_event_boundary_matrix_path(&capsule)
+ .expect_err("parent human documentation must not become contract input");
+ assert!(error.contains(EVENT_BOUNDARY_MATRIX_RELATIVE));
+ let _ = fs::remove_dir_all(parent);
+ }
+
+ #[test]
fn validate_synthetic_operation_contract_bundle() {
let root = create_synthetic_workspace("operation_contract_bundle");
add_operation_contract_files(&root);
@@ -12884,7 +12873,7 @@ crates = ["radroots_a"]
architecture.push_str(&format!("\n[[package]]\nname = \"{name}\"\n"));
}
write_file(
- &root.join("docs/specs/radroots_crates_release_v1.toml"),
+ &root.join("contracts/crates/release_v1/radroots_crates_release_v1.toml"),
&architecture,
);
diff --git a/tools/xtask/tests/fixtures/api-leakage/adr-exception.rs b/tools/xtask/tests/fixtures/api-leakage/adr-exception.rs
@@ -1,3 +0,0 @@
-pub fn temporary_client() -> reqwest::Client {
- unreachable!()
-}