pub mod auth;
pub mod config;
pub mod error;
pub mod handlers;
pub mod ingest;
pub mod keys;
pub mod limits;
pub mod metering;
pub mod tenancy;
pub use handlers::{router, AppState};
pub fn app(
config: std::sync::Arc<config::Config>,
keys: std::sync::Arc<keys::KeyStore>,
metering: std::sync::Arc<metering::Metering>,
tenancy: std::sync::Arc<tenancy::Tenancy>,
) -> axum::Router {
let auth = std::sync::Arc::new(auth::AuthMetering::new(std::sync::Arc::clone(&keys), metering));
auth::metered(router(AppState::new(config, keys, tenancy)), auth)
}