//! Soul Auth — minimal, framework-agnostic auth primitives.
//!
//! Provides:
//! - [`AuthError`] — a unified error enum for authentication/authorization flows.
//! - [`Claims`] — a JWT claims struct (sub / exp / iat / session_id / subject_type).
//! - [`encode_token`] / [`decode_token`] — HS256 helpers around `jsonwebtoken`.
//!
//! # Example
//!
//! ```
//! use soul_auth::{Claims, SubjectType, encode_token, decode_token};
//!
//! let secret = b"my-secret-key";
//! let claims = Claims {
//!     sub: "user:42".into(),
//!     exp: 9_999_999_999,
//!     iat: 1_700_000_000,
//!     session_id: Some("session:1".into()),
//!     subject_type: Some(SubjectType::Human),
//! };
//!
//! let token = encode_token(&claims, secret).unwrap();
//! let decoded = decode_token(&token, secret).unwrap();
//! assert_eq!(decoded.sub, "user:42");
//! ```

pub mod claims;
pub mod error;

pub use claims::{decode_token, encode_token, Claims, SubjectType};
pub use error::{AppError, AuthError, Result};
