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