pub mod clock;
pub mod contract_surface;
pub mod emit;
pub mod identity;
pub mod metadata;
pub mod origin;
pub mod rendezvous;
pub mod version;
pub mod wire_schema;
#[doc(hidden)]
pub mod __compat {
use crate::contract_surface::{ContractRecord, ContractSurface};
use crate::metadata::ParticipantMetadata;
use crate::wire_schema::DescribeWire;
#[must_use]
pub fn contract_surface() -> String {
ContractSurface::new([ContractRecord::document(
"ParticipantMetadata",
crate::metadata::PARTICIPANT_METADATA_SCHEMA_TAG,
ParticipantMetadata::wire_schema(),
)])
.canonical_json()
}
#[cfg(test)]
mod tests {
use super::contract_surface;
#[test]
fn the_surface_is_deterministic_json_naming_the_metadata_document() {
let rendered = contract_surface();
serde_json::from_str::<serde_json::Value>(&rendered).expect("the surface is JSON");
assert_eq!(contract_surface(), rendered);
assert!(
rendered.contains(crate::metadata::PARTICIPANT_METADATA_SCHEMA_TAG),
"{rendered}"
);
assert!(rendered.contains(r#""record":"document""#), "{rendered}");
assert!(rendered.contains("config_schema"), "{rendered}");
}
}
}