//! Neutral-plane primitives shared by every jacquard crate.
//!
//! # Shape
//!
//! Everything in this crate is either an opaque handle (typed ids, digests), a
//! clock, a name for a person or an agent, or a repository path. Nothing here
//! can hold repository *content* larger than a 32-byte digest. That is what
//! makes the crate neutral: linking it gives a crate vocabulary, never data.
//!
//! The one boundary-shaped export is [`DigestSafe`], the marker trait naming
//! which types are allowed to cross into the rendezvous plane. See
//! [`transfer`] for the rules.
pub mod digest;
pub mod error;
pub mod id;
pub mod identity;
pub mod oid;
pub mod path;
pub mod time;
pub mod transfer;
pub use digest::{DIGEST_LEN, Digest, DigestHasher};
pub use error::CoreError;
pub use id::{AgentId, HumanId, IntroductionId, OrgId, PublicationId};
pub use identity::{AgentIdentity, Author, HumanIdentity, Provenance};
pub use oid::{AttestationId, BlobId, DecisionId, ObjectTag, SnapshotId, TreeId};
pub use path::RepoPath;
pub use time::{Clock, FixedClock, SystemClock, Timestamp};
pub use transfer::DigestSafe;