use std::sync::Arc;
use dashmap::DashMap;
use crate::core::AgentDefinition;
use crate::llm::AuditChain;
use crate::orchestrator::Orchestrator;
use crate::orchestrator::approval::ApprovalGate;
use crate::server::auth::AuthConfig;
use crate::server::sse::EventBus;
use crate::tools::ToolRegistry;
pub struct AppState {
pub orchestrator: Orchestrator,
pub tools: Arc<ToolRegistry>,
pub auth: AuthConfig,
pub events: EventBus,
pub http_client: reqwest::Client,
pub audit: Arc<AuditChain>,
pub approval_gate: ApprovalGate,
pub definitions: DashMap<String, AgentDefinition>,
}
pub type SharedState = Arc<AppState>;