//! Optional collaboration service integration for tsafe.
//!
//! Implements the `CollabRemote` trait — a transport abstraction over the
//! tsafe collab-service REST API — plus an in-memory stub for testing.
//! Recovery-key Shamir split/reconstruct helpers live in `recovery`.
//!
//! ## Architecture (ADR-027)
//!
//! `tsafe-core` MUST NOT import or depend on this crate.  The dependency
//! direction is strictly:
//!
//! ```text
//! tsafe-collab  →  (ureq, age, serde, thiserror, uuid, chrono, blahaj)
//! tsafe-cli     →  tsafe-collab   [feature = "collab"]
//! ```
//!
//! `tsafe-core` is not in this graph.
//!
//! ## Feature gate
//!
//! Add `--features collab` to the CLI build to pull this crate in.
//! The crate compiles and passes all tests without a live collab-service.

pub mod error;
pub mod recovery;
pub mod remote;
pub mod stub;
pub mod types;

pub use error::CollabError;
pub use recovery::{reconstruct_recovery_key, split_recovery_key};
pub use remote::CollabRemote;
pub use stub::StubServer;
pub use types::{DekEnvelope, InviteRecord, InviteToken, MemberEntry};
