use bv_core::data::DataManifest;
use bv_core::error::Result;
use bv_core::manifest::Manifest;
use semver::{Version, VersionReq};
#[derive(Debug, Clone)]
pub struct ToolSummary {
pub id: String,
pub latest_version: String,
pub description: Option<String>,
pub tier: bv_core::manifest::Tier,
pub deprecated: bool,
pub input_types: Vec<String>,
pub output_types: Vec<String>,
}
pub trait IndexBackend {
fn name(&self) -> &str;
fn refresh(&self) -> Result<()>;
fn get_manifest(&self, tool: &str, version: &VersionReq) -> Result<Manifest>;
fn list_versions(&self, tool: &str) -> Result<Vec<Version>>;
fn list_tools(&self) -> Result<Vec<ToolSummary>>;
fn get_data_manifest(&self, dataset: &str, version: Option<&str>) -> Result<DataManifest>;
fn list_data_versions(&self, dataset: &str) -> Result<Vec<String>>;
fn list_datasets(&self) -> Result<Vec<String>>;
}