use async_trait::async_trait;
use futures::{AsyncRead, AsyncWrite};
use tor_linkspec::OwnedChanTarget;
pub(crate) mod default;
pub(crate) mod proxied;
pub(crate) use default::DefaultTransport;
#[cfg(feature = "pt-client")]
#[cfg_attr(docsrs, doc(cfg(feature = "experimental-api")))]
pub use proxied::ExternalProxyPlugin;
pub use proxied::ProxyError;
#[async_trait]
pub trait TransportImplHelper {
type Stream: AsyncRead + AsyncWrite + Send + Sync + 'static;
async fn connect(
&self,
target: &OwnedChanTarget,
) -> crate::Result<(OwnedChanTarget, Self::Stream)>;
}