#![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 uuid::Uuid;
use crate::api::tasks::objects::*;
#[async_trait]
pub trait TasksApi: Send + Sync + 'static {
async fn activate_worker_pool(
&self,
auth_header: AuthHeader,
project_id: String,
worker_pool_id: Uuid,
) -> Result<WorkerPoolResponse, CallError<TasksError>>;
async fn cancel_project_task(
&self,
auth_header: AuthHeader,
project_id: String,
task_id: Uuid,
) -> Result<Task, CallError<TasksError>>;
async fn cancel_task(
&self,
auth_header: AuthHeader,
task_id: Uuid,
) -> Result<Task, CallError<TasksError>>;
async fn claim_worker_task(
&self,
auth_header: AuthHeader,
worker_session_id: Uuid,
task_id: Uuid,
) -> Result<PollTaskResponse, CallError<TasksError>>;
async fn create_task(
&self,
auth_header: AuthHeader,
project_id: String,
request: CreateTaskRequest,
) -> Result<CreateTaskResponse, CallError<TasksError>>;
async fn create_trigger(
&self,
auth_header: AuthHeader,
project_id: String,
request: TriggerDefinition,
) -> Result<TaskTrigger, CallError<TasksError>>;
async fn create_worker_pool(
&self,
auth_header: AuthHeader,
project_id: String,
request: CreateWorkerPoolRequest,
) -> Result<WorkerPoolResponse, CallError<TasksError>>;
async fn delete_trigger(
&self,
auth_header: AuthHeader,
project_id: String,
trigger_id: Uuid,
) -> Result<(), CallError<TasksError>>;
async fn drain_worker(
&self,
auth_header: AuthHeader,
worker_session_id: Uuid,
) -> Result<DrainWorkerResponse, CallError<TasksError>>;
async fn finish_worker_attempt(
&self,
auth_header: AuthHeader,
worker_session_id: Uuid,
attempt_id: Uuid,
request: FinishAttemptRequest,
) -> Result<FinishAttemptResponse, CallError<TasksError>>;
async fn heartbeat_worker(
&self,
auth_header: AuthHeader,
worker_session_id: Uuid,
request: HeartbeatWorkerRequest,
) -> Result<HeartbeatWorkerResponse, CallError<TasksError>>;
async fn list_task_specs(
&self,
auth_header: AuthHeader,
project_id: String,
) -> Result<ListTaskSpecsResponse, CallError<TasksError>>;
async fn list_tasks(
&self,
auth_header: AuthHeader,
project_id: String,
request: ListTasksRequest,
) -> Result<ListTasksResponse, CallError<TasksError>>;
async fn list_trigger_invocations(
&self,
auth_header: AuthHeader,
project_id: String,
trigger_id: Uuid,
request: InvocationPageRequest,
) -> Result<InvocationPage, CallError<TasksError>>;
async fn list_triggers(
&self,
auth_header: AuthHeader,
project_id: String,
request: TriggerPageRequest,
) -> Result<TriggerPage, CallError<TasksError>>;
async fn list_worker_attempts(
&self,
auth_header: AuthHeader,
project_id: String,
worker_session_id: Uuid,
request: ListWorkerAttemptsRequest,
) -> Result<ListWorkerAttemptsResponse, CallError<TasksError>>;
async fn list_worker_pools(
&self,
auth_header: AuthHeader,
project_id: String,
request: ListWorkerPoolsRequest,
) -> Result<ListWorkerPoolsResponse, CallError<TasksError>>;
async fn list_worker_sessions(
&self,
auth_header: AuthHeader,
project_id: String,
request: ListWorkerSessionsRequest,
) -> Result<ListWorkerSessionsResponse, CallError<TasksError>>;
async fn pause_worker_pool(
&self,
auth_header: AuthHeader,
project_id: String,
worker_pool_id: Uuid,
) -> Result<WorkerPoolResponse, CallError<TasksError>>;
async fn poll_worker(
&self,
auth_header: AuthHeader,
worker_session_id: Uuid,
) -> Result<PollTaskResponse, CallError<TasksError>>;
async fn read_project_task(
&self,
auth_header: AuthHeader,
project_id: String,
task_id: Uuid,
) -> Result<TaskDetails, CallError<TasksError>>;
async fn read_resource_usage(
&self,
auth_header: AuthHeader,
project_id: String,
worker_session_id: Uuid,
request: ResourceUsageRequest,
) -> Result<ResourceUsageHistory, CallError<TasksError>>;
async fn read_task(
&self,
auth_header: AuthHeader,
task_id: Uuid,
) -> Result<TaskDetails, CallError<TasksError>>;
async fn read_task_stats(
&self,
auth_header: AuthHeader,
project_id: String,
request: TaskStatsRequest,
) -> Result<TaskStats, CallError<TasksError>>;
async fn read_trigger(
&self,
auth_header: AuthHeader,
project_id: String,
trigger_id: Uuid,
) -> Result<TaskTrigger, CallError<TasksError>>;
async fn read_worker_pool(
&self,
auth_header: AuthHeader,
project_id: String,
worker_pool_id: Uuid,
) -> Result<WorkerPoolDetails, CallError<TasksError>>;
async fn read_worker_session(
&self,
auth_header: AuthHeader,
project_id: String,
worker_session_id: Uuid,
) -> Result<WorkerSession, CallError<TasksError>>;
async fn register_worker(
&self,
auth_header: AuthHeader,
request: RegisterWorkerRequest,
) -> Result<RegisterWorkerResponse, CallError<TasksError>>;
async fn retire_worker_pool(
&self,
auth_header: AuthHeader,
project_id: String,
worker_pool_id: Uuid,
) -> Result<WorkerPoolResponse, CallError<TasksError>>;
async fn run_trigger(
&self,
auth_header: AuthHeader,
project_id: String,
trigger_id: Uuid,
request: RunTriggerRequest,
) -> Result<TriggerInvocation, CallError<TasksError>>;
async fn submit_task(
&self,
auth_header: AuthHeader,
project_id: String,
request: SubmitTaskRequest,
) -> Result<CreateTaskResponse, CallError<TasksError>>;
async fn test_trigger(
&self,
auth_header: AuthHeader,
project_id: String,
trigger_id: Uuid,
request: TestTriggerRequest,
) -> Result<TestTriggerResponse, CallError<TasksError>>;
async fn update_trigger(
&self,
auth_header: AuthHeader,
project_id: String,
trigger_id: Uuid,
request: UpdateTriggerRequest,
) -> Result<TaskTrigger, CallError<TasksError>>;
}