use futures::io::{AsyncRead, AsyncWrite};
use crate::Address;
#[async_trait::async_trait]
#[auto_impl::auto_impl(&, Arc)]
pub trait HoprSessionClientOperations: Send + Sync {
type Session: AsyncRead + AsyncWrite + Send + Unpin;
type SessionConfigurator: Send;
type Target: Send;
type Config: Send;
type Error: std::error::Error + Send + Sync + 'static;
async fn connect_to(
&self,
destination: Address,
target: Self::Target,
config: Self::Config,
) -> Result<(Self::Session, Self::SessionConfigurator), Self::Error>;
}