use std::ops::ControlFlow; pub use litellm_coroutine::{Abandoned, Answer, Reply, reply}; use crate::interceptors::{RawResponse, RequestContext, WireRequest}; pub trait Protocol: Send + Sync + 'static { type Request: Send + 'static; type Response: Send + 'static; type Error: Clone + Send + Sync + 'static; type HostCall: Send + 'static; type Chunk: Send + 'static; type StreamHead: Send + 'static; } pub enum HostRequest { HostCall(P::HostCall), Intercept(InterceptRequest), Stream(StreamDelivery

), } pub enum InterceptRequest { ResultReady { facts: crate::interceptors::ExecutionFacts, reply: Reply>, }, BeforeProviderRequest { wire: Box, context: Box, reply: Reply, }, AfterProviderResponse { raw: RawResponse, reply: Reply>, }, } pub enum StreamDelivery { Open(P::StreamHead, Reply>), Chunk(P::Chunk, Reply>), }