1use crate::contract::{
2 RuntimeActionRequest, RuntimeApplyRequest, RuntimeCapabilities, RuntimeExecRequest,
3 RuntimeExecResult, RuntimeInspection, RuntimeLogChunk, RuntimeLogQuery, RuntimeObservation,
4 RuntimeRemoval,
5};
6use crate::RuntimeResult;
7use async_trait::async_trait;
8
9#[async_trait]
11pub trait RuntimeClient: Send + Sync {
12 async fn capabilities(&self) -> RuntimeResult<RuntimeCapabilities>;
13
14 async fn apply(&self, request: &RuntimeApplyRequest) -> RuntimeResult<RuntimeObservation>;
15
16 async fn inspect(&self, unit_id: &str) -> RuntimeResult<RuntimeInspection>;
17
18 async fn stop(&self, request: &RuntimeActionRequest) -> RuntimeResult<RuntimeInspection>;
19
20 async fn remove(&self, request: &RuntimeActionRequest) -> RuntimeResult<RuntimeRemoval>;
21
22 async fn logs(&self, query: &RuntimeLogQuery) -> RuntimeResult<Vec<RuntimeLogChunk>>;
23
24 async fn exec(&self, request: &RuntimeExecRequest) -> RuntimeResult<RuntimeExecResult>;
25}