gsp/lib.rs
1//! **Group Signaling Protocol** — signalling sub-protocol of the
2//! Group Protocol Stack.
3//!
4//! Receive-side pipeline (GSP §7): decrypt (handled by GBP) → check sender
5//! authorisation → validate `args` schema → apply atomically → ACK / NACK.
6//!
7//! This crate provides:
8//!
9//! * [`GspSignal`] — the CBOR-encoded signal envelope.
10//! * [`GspClient`] — stateful client that maintains:
11//! * `request_id` deduplication;
12//! * a mute-list;
13//! * the current membership set (driven by `JOIN` / `LEAVE`);
14//! * `signal_type` → [`gbp_core::SignalType`] decoding.
15//!
16//! See [`gbp-protocol`] for the underlying frame format.
17//!
18//! [`gbp-protocol`]: https://crates.io/crates/gbp-protocol
19
20#![deny(missing_docs)]
21
22pub mod capabilities;
23pub mod client;
24pub mod roles;
25pub mod signal;
26
27pub use capabilities::CapabilitiesNegotiator;
28pub use client::{GspAccept, GspClient, GspError};
29pub use roles::{Permissions, RoleError, RoleRegistry, RoleSpec};
30pub use signal::GspSignal;