//! # lmrc-proxy
//!
//! HTTP reverse proxy and API gateway utilities for LMRC Stack applications.
//!
//! This library provides:
//! - HTTP reverse proxy with configurable behavior
//! - Subdomain-based routing
//! - Route resolution trait for flexible backend discovery
//! - Axum middleware for proxy and routing
//!
//! ## Quick Start
//!
//! ```rust
//! use lmrc_proxy::{
//!     routing::{StaticRouteResolver, RouteResolver},
//!     ProxyConfig,
//! };
//! use std::sync::Arc;
//!
//! # #[tokio::main]
//! # async fn main() {
//! let resolver = Arc::new(
//!     StaticRouteResolver::new()
//!         .add_route("api", "http://api-service:8080")
//!         .add_route("admin", "http://admin-service:9000")
//! );
//!
//! // Use resolver to look up backend URLs
//! let backend = resolver.resolve("api").await;
//! assert_eq!(backend, Some("http://api-service:8080".to_string()));
//! # }
//! ```

pub mod client;
pub mod error;
pub mod routing;
pub mod middleware;

// Re-export commonly used types
pub use client::{proxy_request, ProxyConfig};
pub use error::{ProxyError, ProxyResult};
pub use routing::{extract_subdomain, RouteResolver, StaticRouteResolver};
pub use middleware::{subdomain_extractor, subdomain_proxy, Subdomain};
