use std::pin::Pin;
use async_trait::async_trait;
use bytes::Bytes;
use futures::Stream;
use crate::types::{HttpRequest, HttpResponse};
use crate::Result;
pub mod mock_transport;
pub mod reqwest_transport;
#[async_trait]
pub trait Transport: Send + Sync + 'static {
async fn send_http_request(&self, request: HttpRequest) -> Result<HttpResponse>;
async fn send_http_stream_request(
&self,
request: HttpRequest,
) -> Result<Pin<Box<dyn Stream<Item = Result<Bytes>> + Send>>>;
}