use crate::events::{AgentObserver, ObserverFactory};
use aether_auth::OAuthCredentialStorage;
use std::sync::Arc;
#[derive(Clone, Default)]
pub struct AgentDeps {
pub oauth_credential_store: Option<Arc<dyn OAuthCredentialStorage>>,
pub observer_factory: Option<ObserverFactory>,
}
impl AgentDeps {
pub fn new(
oauth_credential_store: Arc<dyn OAuthCredentialStorage>,
observer_factory: Option<ObserverFactory>,
) -> Self {
Self { oauth_credential_store: Some(oauth_credential_store), observer_factory }
}
pub fn observer(&self) -> Option<Box<dyn AgentObserver>> {
self.observer_factory.as_ref().map(|factory| factory())
}
}