#![allow(dead_code)]
#[cfg(not(all(
feature = "stripe",
feature = "email",
feature = "storage-s3",
feature = "cache-redis"
)))]
compile_error!(
"mockforge-registry-server is the SaaS binary and must be built with its \
full integration set. Use the default `saas` feature (or at minimum \
`--features postgres,stripe,email,storage-s3,cache-redis`). The `stripe`, \
`email`, `storage-s3`, and `cache-redis` integrations are referenced \
unconditionally, so a slimmer build does not compile. For an OSS-friendly \
registry library, depend on `mockforge-registry-core` instead. See #644."
);
pub use mockforge_registry_core::auth;
pub mod ai;
pub mod cache;
pub mod circuit_breaker;
pub mod config;
pub mod database;
pub mod deployment;
pub mod email;
pub mod error;
pub mod fly_logs;
pub mod fly_metrics;
pub mod fly_nats;
pub mod handlers;
pub mod metrics;
pub mod middleware;
pub mod otlp_grpc;
pub use mockforge_registry_core::models;
pub mod pillar_tracking_init;
pub mod platform_signing;
pub mod redis;
pub mod routes;
pub mod run_queue;
pub mod sso_domain;
pub mod storage;
pub use mockforge_registry_core::store;
pub use mockforge_registry_core::two_factor;
pub use mockforge_registry_core::validation;
pub mod workers;
use std::sync::Arc;
use crate::circuit_breaker::CircuitBreakerRegistry;
use crate::config::Config;
use crate::database::Database;
use crate::redis::RedisPool;
use crate::storage::PluginStorage;
use crate::store::RegistryStore;
#[derive(Clone)]
pub struct AppState {
pub db: Database,
pub storage: PluginStorage,
pub config: Config,
pub metrics: Arc<mockforge_observability::prometheus::MetricsRegistry>,
pub analytics_db: Option<mockforge_analytics::AnalyticsDatabase>,
pub redis: Option<RedisPool>,
pub circuit_breakers: CircuitBreakerRegistry,
pub store: Arc<dyn RegistryStore>,
pub platform_signing: Option<Arc<dyn platform_signing::PlatformSigningController>>,
}