use std::collections::HashMap;
use async_trait::async_trait;
use thiserror::Error;
use tycho_simulation::tycho_common::models::Address;
use crate::{graph::GraphError, types::ComponentId};
#[derive(Debug, Clone)]
#[cfg_attr(test, derive(PartialEq))]
pub enum MarketEvent {
MarketUpdated {
added_components: HashMap<ComponentId, Vec<Address>>,
removed_components: Vec<ComponentId>,
updated_components: Vec<ComponentId>,
},
}
#[derive(Error, Debug)]
pub enum EventError {
#[error("graph errors: {0:?}")]
GraphErrors(Vec<GraphError>),
}
#[async_trait]
pub trait MarketEventHandler: Send {
async fn handle_event(&mut self, event: &MarketEvent) -> Result<(), EventError>;
}