use std::sync::Arc; use eyre::Result; use async_trait::async_trait; use tokio::sync::mpsc; use crate::msg::RircdMsg; use crate::event::RircdEvent; #[async_trait] pub trait Endpoint { async fn listen(self: Arc, send_msg: mpsc::Sender, send_event: mpsc::Sender) -> Result<()>; fn name(&self) -> String; }