use a2a::*;
use async_trait::async_trait;
pub type TaskVersion = u64;
#[derive(Debug, Clone)]
pub struct StoredTask {
pub task: Task,
pub version: TaskVersion,
}
#[async_trait]
pub trait TaskStore: Send + Sync + 'static {
async fn create(&self, task: Task) -> Result<TaskVersion, A2AError>;
async fn update(&self, task: Task) -> Result<TaskVersion, A2AError>;
async fn get(&self, task_id: &str) -> Result<Option<Task>, A2AError>;
async fn list(&self, req: &ListTasksRequest) -> Result<ListTasksResponse, A2AError>;
}