use async_trait::async_trait;
use tokio_stream::Stream;
use crate::types::{
InferenceDescriptor, InferenceError, PredictRequest, PredictResponse, StreamEventRef,
};
#[async_trait]
pub trait Inference:
rskit_provider::RequestResponse<PredictRequest, PredictResponse> + Send + Sync
{
async fn predict(&self, request: PredictRequest) -> Result<PredictResponse, InferenceError>;
fn descriptor(&self) -> InferenceDescriptor;
}
#[async_trait]
pub trait StreamingInference: Inference {
async fn predict_stream(
&self,
request: PredictRequest,
) -> Result<Box<dyn Stream<Item = StreamEventRef> + Send + Unpin>, InferenceError>;
}