use std::collections::HashMap;
use std::sync::Arc;
use axum::extract::State as AxumState;
use channel::transport::inbound::WebhookInboundTransport;
use tokio::sync::Mutex;
use uuid::Uuid;
use crate::metrics::Metrics;
pub const CACHE_CAPACITY: usize = 1000;
pub struct AppState {
pub processor: Arc<signal::SignalProcessor>,
pub webhook_handlers: HashMap<String, Arc<WebhookInboundTransport>>,
pub cache: Mutex<lru::LruCache<Uuid, signal::SignalResponse>>,
pub api_keys: Vec<brain::ApiKeyConfig>,
pub metrics: Arc<Metrics>,
}
pub type AppStateRef = AxumState<Arc<AppState>>;