use alloc::string::String;
use core::future::Future;
use core::pin::Pin;
pub type BoxFuture<'a, T> = Pin<Box<dyn Future<Output = T> + 'a>>;
#[derive(thiserror::Error, Debug)]
pub enum SignalingError {
#[error("signaling failed: {0}")]
Failed(String),
}
pub trait SignalingClient: Send + Sync + 'static {
fn publish_offer(&mut self, offer: String) -> BoxFuture<'_, Result<String, SignalingError>>;
fn retrieve_offer(&mut self) -> BoxFuture<'_, Result<String, SignalingError>>;
fn submit_answer(&mut self, answer: String) -> BoxFuture<'_, Result<(), SignalingError>>;
}