#![forbid(unsafe_code)]

pub mod auth;
pub mod capabilities;
pub mod config;
pub mod error;
pub mod observability;
pub mod pagination;
pub mod permissions;
pub mod response;

#[cfg(feature = "gateway")]
pub mod gateway;

#[cfg(feature = "openapi")]
pub mod openapi;

#[cfg(feature = "web")]
pub mod middleware;

#[cfg(feature = "web")]
pub mod web;

pub use auth::{PrincipalKind, UserContext};
pub use error::{AppError, ErrorCode};
pub use pagination::{PageRequest, Paged};
pub use response::{ApiErrorDetail, ApiMeta, ApiResponse};

#[cfg(feature = "gateway")]
pub use gateway::GatewayAuthConfig;

#[cfg(all(feature = "gateway", feature = "web"))]
pub use gateway::gateway_resolver;
