pub mod api_keys;
pub mod audit;
pub mod brute_force;
pub mod ip_access;
pub mod rate_limit;
pub mod rotation;
pub use api_keys::{ApiKeyManager, ApiKeyRecord, GeneratedKey, KeyStatus, ValidatedKey};
pub use audit::{AuditEvent, AuditEventType, AuditLogger, AuditOutcome};
pub use brute_force::{BruteForceAction, BruteForceProtection};
pub use ip_access::{IpAccessController, IpValidationResult, TenantIpConfig};
pub use rate_limit::{RateLimitDecision, RateLimiter, TierLimits};
pub use rotation::{KeyRotationManager, RotationHandle, RotationState};
use std::sync::Arc;
#[derive(Clone)]
pub struct SecurityState {
pub api_key_manager: Arc<ApiKeyManager>,
pub rate_limiter: Arc<RateLimiter>,
pub ip_controller: Arc<IpAccessController>,
pub brute_force: Arc<BruteForceProtection>,
pub audit: Arc<AuditLogger>,
}
#[derive(Debug, thiserror::Error)]
pub enum SecurityError {
#[error("Key error: {0}")]
Key(#[from] api_keys::KeyError),
#[error("Rate limit error: {0}")]
RateLimit(String),
#[error("IP access error: {0}")]
IpAccess(String),
#[error("Audit error: {0}")]
Audit(#[from] audit::AuditError),
#[error("Rotation error: {0}")]
Rotation(#[from] rotation::RotationError),
#[error("Configuration error: {0}")]
Config(String),
#[error("Internal error: {0}")]
Internal(String),
}
pub type SecurityResult<T> = std::result::Result<T, SecurityError>;