//! Defines common types and traits used across the CipherStash ecosystem, particularly for CipherStash Token Service (CTS) and the CTS Client
//! used in `cipherstash-client`.
//!
//! # Features
//!
//! - `server` - Enables server-specific types and traits (e.g., Axum integration).
//! - `test_utils` - Enables testing utilities for randomized test data generation.
mod auth;
mod crn;
mod region;
mod service;
mod workspace;

pub mod oidc;
pub mod protocol;

pub use auth::claims;
pub use crn::{AsCrn, Crn, InvalidCrn};
pub use region::{AwsRegion, Region, RegionError};
pub use service::{
    CtsServiceDiscovery, SecretsServiceDiscovery, ServiceDiscovery, ZeroKmsServiceDiscovery,
};
pub use workspace::{InvalidWorkspaceId, Workspace, WorkspaceId, WorkspaceIdGenerationError};

// Re-export axum if the server feature is enabled so that the server uses the same version
#[cfg(feature = "server")]
pub use axum;

#[cfg(feature = "server")]
pub use axum_extra;
