use crate::ctx;
use objectiveai_sdk::error::ResponseError;
#[async_trait::async_trait]
pub trait Client<CTXEXT>: Send + Sync + 'static {
async fn get_agent(
&self,
ctx: &ctx::Context<CTXEXT>,
path: &objectiveai_sdk::RemotePath,
) -> Result<Option<objectiveai_sdk::agent::RemoteAgentBaseWithFallbacks>, ResponseError>;
async fn get_swarm(
&self,
ctx: &ctx::Context<CTXEXT>,
path: &objectiveai_sdk::RemotePath,
) -> Result<Option<objectiveai_sdk::swarm::RemoteSwarmBase>, ResponseError>;
async fn get_function(
&self,
ctx: &ctx::Context<CTXEXT>,
path: &objectiveai_sdk::RemotePath,
) -> Result<Option<objectiveai_sdk::functions::FullRemoteFunction>, ResponseError>;
async fn get_profile(
&self,
ctx: &ctx::Context<CTXEXT>,
path: &objectiveai_sdk::RemotePath,
) -> Result<Option<objectiveai_sdk::functions::RemoteProfile>, ResponseError>;
async fn resolve_latest(
&self,
ctx: &ctx::Context<CTXEXT>,
kind: crate::retrieval::Kind,
path: &objectiveai_sdk::RemotePathCommitOptional,
) -> Result<Option<objectiveai_sdk::RemotePath>, ResponseError>;
}