//! Verification module for SD-JWT presentations.
//!
//! This module provides parsing and verification of SD-JWT (Selective
//! Disclosure JWT) credentials as defined in the IETF SD-JWT specification.
//!
//! # SD-JWT Overview
//!
//! SD-JWT enables privacy-preserving credential presentation by allowing
//! holders to selectively disclose only specific claims from a credential. The
//! format is:
//!
//! ```text
//! <issuer-signed-jwt>~<disclosure1>~<disclosure2>~...~<key-binding-jwt>
//! ```
//!
//! # Example
//!
//! ```rust,ignore
//! use lastid_sdk::verification::VerifiablePresentation;
//!
//! // Parse an SD-JWT presentation
//! let vp = VerifiablePresentation::parse(sdjwt_string)?;
//!
//! // Extract standard claims
//! let issuer = vp.issuer_did()?;
//! let subject = vp.subject_did()?;
//! let cred_type = vp.credential_type()?;
//!
//! // Get disclosed claims
//! for disclosure in vp.disclosures() {
//!     if let Some(claim_name) = &disclosure.claim {
//!         println!("{}: {:?}", claim_name, disclosure.value);
//!     }
//! }
//!
//! // Reconstruct full claims (merging disclosures into payload)
//! let claims = vp.reconstruct_claims();
//!
//! // Verify signature with issuer's public key
//! vp.verify_signature(&issuer_jwk)?;
//! ```
//!
//! # Security Considerations
//!
//! - Always verify the signature before trusting claims
//! - Check `exp` (expiration) and `nbf` (not-before) timestamps
//! - Validate the issuer against the trust registry
//! - Ensure the credential type matches your requirements

mod sdjwt;

pub use sdjwt::{Disclosure, VerifiablePresentation};
