use std::path::PathBuf;
use serde::{Deserialize, Serialize};
use crate::error::Result;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PulledImage {
pub path: PathBuf,
pub digest: String,
pub reference: String,
}
#[async_trait::async_trait]
pub trait ImageRegistry: Send + Sync {
async fn pull(&self, reference: &str) -> Result<PulledImage>;
async fn force_pull(&self, reference: &str) -> Result<PulledImage>;
async fn is_cached(&self, reference: &str) -> bool;
async fn remove(&self, reference: &str) -> Result<bool>;
async fn list_cached(&self) -> Result<Vec<String>>;
}