use async_trait::async_trait;
use futures::{AsyncRead, AsyncWrite};
use tor_linkspec::OwnedChanTarget;
pub(crate) mod default;
pub 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;
use tor_proto::peer::PeerAddr;
use tor_rtcompat::StreamOps;
#[async_trait]
pub trait TransportImplHelper {
type Stream: AsyncRead + AsyncWrite + StreamOps + Send + Sync + 'static;
async fn connect(&self, target: &OwnedChanTarget) -> crate::Result<(PeerAddr, Self::Stream)>;
}