#![doc = "Transport-independent service interface for local and remote calls."]
use async_trait::async_trait;
use spiral_contract::auth::AuthHeader;
use spiral_contract::call::CallError;
use crate::api::workloads::objects::*;
#[async_trait]
pub trait WorkloadsApi: Send + Sync + 'static {
async fn add_key(
&self,
auth_header: AuthHeader,
workload_id: String,
request: CreateKeyRequest,
) -> Result<KeyResponse, CallError<WorkloadsError>>;
async fn create_policy(
&self,
auth_header: AuthHeader,
workload_id: String,
request: CreatePolicyRequest,
) -> Result<PolicyResponse, CallError<WorkloadsError>>;
async fn create_workload(
&self,
auth_header: AuthHeader,
project_id: String,
request: CreateWorkloadRequest,
) -> Result<WorkloadResponse, CallError<WorkloadsError>>;
async fn deactivate_workload(
&self,
auth_header: AuthHeader,
workload_id: String,
) -> Result<(), CallError<WorkloadsError>>;
async fn list_keys(
&self,
auth_header: AuthHeader,
workload_id: String,
request: PageRequest,
) -> Result<KeyPage, CallError<WorkloadsError>>;
async fn list_policies(
&self,
auth_header: AuthHeader,
workload_id: String,
request: PageRequest,
) -> Result<PolicyPage, CallError<WorkloadsError>>;
async fn list_workloads(
&self,
auth_header: AuthHeader,
project_id: String,
request: PageRequest,
) -> Result<WorkloadPage, CallError<WorkloadsError>>;
async fn read_workload(
&self,
auth_header: AuthHeader,
workload_id: String,
) -> Result<Workload, CallError<WorkloadsError>>;
async fn remove_key(
&self,
auth_header: AuthHeader,
workload_id: String,
kid: String,
) -> Result<(), CallError<WorkloadsError>>;
async fn remove_policy(
&self,
auth_header: AuthHeader,
policy_id: String,
) -> Result<(), CallError<WorkloadsError>>;
async fn revoke_credentials(
&self,
auth_header: AuthHeader,
client_id: String,
) -> Result<(), CallError<WorkloadsError>>;
}