//! Core type definitions for the `LastID` SDK.
//!
//! This module defines the fundamental types used throughout the SDK for
//! credential requests, responses, and verification.
//!
//! # Type Overview
//!
//! | Type | Description |
//! |------|-------------|
//! | [`ClientId`] | OAuth client identifier for IDP authentication |
//! | [`Did`] | Decentralized Identifier (e.g., `did:lastid:...`) |
//! | [`RequestId`] | Unique identifier for credential requests |
//! | [`EndpointUrl`] | Validated HTTPS URL (allows localhost for dev) |
//! | [`RequestStatus`] | Polling result enum (Pending, Fulfilled, Denied, etc.) |
//! | [`CredentialPolicyRequest`] | Request payload sent to IDP |
//! | [`CredentialRequestResponse`] | Response from credential request initiation |
//! | [`VerifiedCredential`] | Verified presentation with extracted claims |
//!
//! # Example
//!
//! ```rust,ignore
//! use lastid_sdk::types::{Did, RequestId, RequestStatus};
//!
//! // DIDs are validated on construction
//! let issuer = Did::new("did:lastid:issuer123")?;
//!
//! // Request IDs wrap strings for type safety
//! let req_id = RequestId::new("req_abc123".to_string());
//!
//! // Poll status is an enum with associated data
//! match status {
//!     RequestStatus::Fulfilled { presentation, .. } => { /* handle */ }
//!     RequestStatus::Pending { .. } => { /* wait */ }
//!     _ => { /* handle other cases */ }
//! }
//! ```

mod client_id;
mod credential_request;
mod credential_response;
mod device_attestation;
mod device_security;
mod did;
mod endpoint_url;
mod field_verification;
pub mod parsed;
mod request_id;
mod request_status;
mod verified_credential;
mod verified_response;

pub use client_id::ClientId;
pub use credential_request::CredentialPolicyRequest;
// Re-export credential chain utilities (FR-007)
pub use credential_request::credential_chain;
pub use credential_response::CredentialRequestResponse;
pub use device_attestation::DeviceAttestation;
pub use device_security::DeviceSecurity;
pub use did::Did;
pub use endpoint_url::EndpointUrl;
pub use field_verification::FieldVerificationMetadata;
pub use request_id::RequestId;
pub use request_status::RequestStatus;
pub use verified_credential::VerifiedCredential;
pub use verified_response::VerifiedResponse;
