//! # sui-id-shared
//!
//! Shared types crossing crate boundaries. Kept intentionally small: only DTOs,
//! protocol-level enums, and a public-facing API error type live here. Internal
//! domain logic stays in `sui-id-core`.
pub use ;
pub use ;
/// Normalise an email address for case-insensitive uniqueness checks and
/// lookup. The original-case form is preserved separately in `UserRow.email`
/// for display purposes; this function produces the canonical form used for
/// database indexing and forgot-password lookup.
///
/// Rule: trim leading/trailing whitespace, then convert to lowercase.
/// We do not perform full RFC 5321 local-part canonicalisation (dots,
/// plus-addressing) — those vary by provider and are not universally
/// applicable.