//! User-level identity, decoupled from MLS state.
//!
//! The [`Identity`](crate::identity::Identity) trait defines a user —
//! the bytes that name them and a display form. MLS-specific binding
//! (signing keypair, credential) lives in
//! [`crate::mls_crypto::MlsCredentials`], constructed *from* an
//! `Identity` at User init and held shared.
//!
//! The library is identity-agnostic: the protocol carries identity
//! *bytes*. Integrators bring their own `Identity` impl that derives
//! bytes from whatever they use (Ethereum wallet address, Ed25519
//! public key, account ID, …) and a stable display form.
/// Pluggable user identity.
///
/// Bridges an authenticated user (wallet, account id, …) to anything
/// downstream that needs to name them.